2016-08-30 4 views
0

HTTPSウェブサイトで個人用のユーザスクリプトを有効にしました。ユーザースクリプトはSocket.ioクライアントAPIを使用してPCのNode.js TCPサーバーに接続しますSocket.ioブラウザクライアントをローカルNode.jsネットサーバに接続する

サーバーはクライアントがサーバーに接続していることに気づきましたが、クライアントは接続に気づきません

ブラウザのコンソールからこのエラーを受け取り、リソースの読み込みに失敗しました:ネット:: ERR_TIMED_OUT

私はこのエラーを解決する方法がわからないが、私はそれがで起因する何かを持っていると仮定していますSocket.ioとNetが互いに互換性がないか、Webサイトで接続が許可されていない

はここしかし、WebSocketをし、HTTPプロトコルが利用可能です、私のクライアントコード

socket.on('connect', function() { 
    console.log('CONNECTED TO SERVER'); 
    socket.on('message', function(msg) { 
     messageReceive(msg); 
    }); 
    setInterval(runRoutine, 1000); 
}); 

ブラウザから直接TCPソケットを使用することはできません私のサーバコード

var net = require('net'); 

var clients = []; 

var port = 8841; 

net.createServer(function(socket) { 

    socket.name = socket.remoteAddress + ':' + socket.remotePort; 
    clients.push(socket); 

    broadcast(socket.name + " has connected to the server", socket); 

    socket.on('message', function(data) { 
     broadcast(socket.name + "<>" + data, socket); 
    }); 

    socket.on('end', function() { 
     clients.splice(clients.indexOf(socket), 1); 
     broadcast(socket.name + '<>disconnected', socket); 
    }); 

    function broadcast(message, sender) { 
     console.log(message); 
     clients.forEach(function(client) { 
      if(client === sender) return; 
      //client.write(message); 
     }); 
    } 

}).listen(port); 

console.log("Chat server running at port " + port); 
+0

これはできません。サーバー側の 'socket'はTCPソケットであり、socket.ioソケットではないため、' message_'イベントが発生しません。とにかくsocket.ioサーバーの代わりにTCPサーバーを使用しているのはなぜですか? – mscdex

答えて

0

ジャバスクリプトです。 Soccket.ioは可能な場合にはWebSocketを使用します。だから、サーバー側はwebsocket接続を聞いてください。 例を参照here

関連する問題