2016-08-30 150 views
0

我在HTTPS网站上启用了个人userscript。 userscript使用Socket.io客户端API连接到我的PC上的Node.js TCP服务器将Socket.io浏览器客户端连接到本地Node.js网络服务器

服务器注意到客户端正在连接到服务器,但客户端不会注意到连接,而是改为接收来自浏览器控制台

无法加载资源此错误:净:: ERR_TIMED_OUT

我不知道如何解决这个错误,但我假设它有某种因与Socket.io和Net彼此不兼容或者网站不允许连接发生

这里是我的客户端代码

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

我的服务器代码

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

您不能这样做,因为服务器端的套接字是TCP套接字,而不是套接字套接字,所以您不会收到消息事件。为什么你使用TCP服务器而不是socket.io服务器? – mscdex

回答

0

的Javascript不能直接从浏览器中使用TCP套接字,然而的WebSocket和HTTP协议是可用的。如果可以的话,Soccket.io使用websockets。所以你的服务器端应该听WebSocket连接。 参见示例here

相关问题