【发布时间】:2023-11-17 00:08:02
【问题描述】:
我在 HTTPS 网站上启用了个人用户脚本。用户脚本正在使用 Socket.io 客户端 API 连接到我 PC 中的 Node.js TCP 服务器
服务器注意到客户端正在连接服务器,但客户端没有注意到连接,而是从浏览器控制台收到此错误
加载资源失败:net::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);
【问题讨论】:
-
你不能这样做,因为服务器端的
socket是一个TCP套接字,而不是socket.io套接字,所以你不会得到'message'事件。为什么你仍然使用 TCP 服务器而不是 socket.io 服务器?
标签: node.js sockets tcp socket.io