将Socket.io浏览器客户端连接到本地Node.js Net服务器

时间:2016-08-30 17:38:45

标签: node.js sockets tcp socket.io

我在HTTPS网站上启用了个人用户脚本。用户脚本使用Socket.io客户端API与我的PC中的Node.js TCP服务器建立连接

服务器注意到客户端正在连接到服务器,但客户端没有注意到连接,而是从浏览器控制台收到此错误

  

无法加载资源:net :: ERR_TIMED_OUT

我不知道如何解决此错误,但我认为Socket.io与Net之间存在某些问题,而且网站不允许连接发生< / p>

这是我的客户代码

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);

1 个答案:

答案 0 :(得分:0)

Javascripts不能直接从浏览器使用tcp套接字,但是可以使用websocket和http协议。如果能够,Soccket.io使用websockets。所以你的服务器端应该听websocket连接。 请参见示例here