【问题标题】:How to integrate socket.io with an already developed node application如何将 socket.io 与已开发的节点应用程序集成
【发布时间】:2017-07-24 17:05:27
【问题描述】:

我开发了一个在 3000 端口运行的节点应用程序。我使用了 MEAN Stack。 还参考了一些教程,我开发了一个在 3001 端口上运行的 socket.io 聊天应用程序。

如何将此聊天应用程序集成/添加到我的 MEAN Stack 应用程序中。如何同时运行两个服务器/端口?

socket.io

var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
nicknames = [];

server.listen(3001);

 app.get('/',function(req, res){
  res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection',function(socket){
socket.on('new user', function(data, callback){
    if (nicknames.indexOf(data) != -1){
        callback(false);
    }else {
        callback(true);
        socket.nickname = data;
        nicknames.push(socket.nickname);
        updateNicknames();
    }

});

function updateNicknames(){
    io.sockets.emit('usernames', nicknames);
}


socket.on('send message',function(data){
    io.sockets.emit('new message',{msg:data, nick:socket.nickname});

});

socket.on('disconnect',function(data){
    if(!socket.nickname) return;
    nicknames.splice(nicknames.indexOf(socket.nickname), 1);
    updateNicknames();
});

});

【问题讨论】:

  • 您可以将两者组合到同一个进程中(只需在同一个 node.js 进程中运行两个服务器),也可以在同一个端口 3000 的 Web 服务器上运行 socket.io 应用程序。 Socket(和它下面的 webSockets)是专门设计的,因此它们可以共享一个用于其他类型的 web 请求的 web 服务器。
  • 我试图在同一个端口上运行这两个应用程序,但只有第一个在工作。另一个显示该端口已在使用中。我该怎么做,我在哪里可以参考这个?
  • 与其在与您的其他服务器相同的端口上为 socket.io 创建一个新服务器,您只需将它传递给您的其他服务器,然后 socket.io 将共享该服务器。

标签: node.js express socket.io


【解决方案1】:

如果它仍然相关(我相信这是因为我出于同样的原因来到这里)这样做:

server.listen(app.get('port'), () => {
  console.log(`Socket is listening on port: ${app.get('port')}`);
});

附:这是在你使用 Express 生成器搭建应用程序的情况下

取自这里Github link

【讨论】:

    【解决方案2】:

    您可以创建一个全局事件并在它们之间进行通信。可以在middlewere中加入emit函数来进行express。

    https://nodejs.org/api/events.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 2020-02-25
      相关资源
      最近更新 更多