【问题标题】:How set up multiple servers on the same node.js program that communicate with socket.io?如何在与 socket.io 通信的同一个 node.js 程序上设置多个服务器?
【发布时间】: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");。无论如何,对于我的情况,由于某种原因它不起作用。

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    使用命令 npm i socket.io-client 简短地回答下载 socket.io-client 然后使用 require("socket.io-client"); 而不是 require("socket.io/client-dist/socket.io");

    答案毕竟在这个帖子中: Is it possible to set up a socket.io client running (server-side) on a node.js server? 我错了 socket.io-client 实际上是另一个可以从 socket.io 单独下载的 npm 模块:https://www.npmjs.com/package/socket.io-client 使用:需要(“socket.io/client-dist/socket.io”);出乎意料地没有给我编译错误,但似乎它不是正确的方法,socket.io/client-dist/socket.io 模块可能仅适用于浏览器或其他东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      • 2012-01-09
      • 2021-03-02
      • 2019-01-26
      相关资源
      最近更新 更多