【发布时间】:2022-02-10 06:20:05
【问题描述】:
我试图在一台机器上模拟与 node.js 程序中的 socket.io 通信的多个服务器。将有一个协调服务器和许多客户端服务器。我这样做的未来目标是拥有一个“Web 服务程序”,为此我通过添加更多服务器来提高它的处理能力。
这里是协调器服务器部分代码的简化;
const httpM= require('http');
const socketIo = require('socket.io');
const express = require('express');
const app = express();
var http = httpM.Server(app);
io = socketIo(http);
io.on('connection', function(socket) {
console.log("successful connection");
socket.on("test",function(msg){
console.log(msg);
})
});
const PORT = process.env.PORT || (5000);
http.listen(PORT, () => console.log(`coordinator server: started on ${PORT}`));
这里是客户端服务器部分。
const clientIo = require("socket.io/client-dist/socket.io");
var interServerSocket;
setInterval(function() {
if(interServerSocket==null||interServerSocket==undefined)
{
interServerSocket= clientIo.connect("http://localhost:5000");
console.log("-should have connected the interserver socket");
}
interServerSocket.emit("test","hello coordinator here to serve");
console.log("-should have emit");
},5000);
但我的代码不起作用。我从来没有在控制台中记录“成功连接”,也没有记录我发出的任何消息。协调服务器部分没有记录任何内容。 我看不出我做错了什么。我在想这可能与代码都在同一台机器上的同一个节点程序中这一事实有关。也许我写错了网址。感谢所有帮助。
我发现这个问题对我有帮助: Is it possible to set up a socket.io client running (server-side) on a node.js server? 我认为它已经过时了,require("socket.io-client"); 需要用 require("socket.io/client-dist/socket.io");。无论如何,对于我的情况,由于某种原因它不起作用。
【问题讨论】: