javascript - Socket.io 有两个 Node.js 服务器?

标签 javascript node.js sockets

我很困惑如何使用 socket.io 以便两个 Node 服务器可以在彼此之间发出事件。

Server.js localhost:9200

io.sockets.on('connection', function(socket) {

    socket.on('messageFromClient', function(data) {
        socket.broadcast.to(data.chatRoom).emit('messageFromServer', data);
    });

});

这个套接字连接像这样监听服务器

var appPort  = 9200; 

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

// Launch server
server.listen(appPort);
<小时/>

我有一个由 node.js 提供服务的网站... Server.js localhost:3000:我需要它能够从 localhost:9200 接收和发出事件强>

如何为 localhost:3000 设置 server.js?

最佳答案

我明白了,这真的很简单。可以有两台 Node 服务器,但只有一台服务器需要使用socket.io并处理事件。连接所需要做的就是通过 CORS 共享客户端脚本,我想避免 CORS,但您只需要通过 CORS 共享 socket.io 脚本,不需要其他任何东西,所以这还不错。

首先需要允许您的其他域通过 CORS 访问该脚本。

// requires cors module I think (var cors = require('cors');)
var corsOptions = {
  origin: 'http://localhost:3100',
  credentials: true
};

其次,客户端使用 io.connect 非常重要,我不确定它是否已贬值或其他什么,但现代文档都没有提到这一点。

// What worked for me
var socket = io.connect('http://localhost:3100');

// Docs say
var socket = io('http://localhost:3100'); // ?? I am not sure why but io.connect worked for me.

关于javascript - Socket.io 有两个 Node.js 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27778141/

相关文章:

javascript - 单击以删除 html 和 javascript

javascript - AngularJS,将这两种方法合二为一

javascript - 使用 axios 和 express 时的 'Access-Control-Allow-Origin'

javascript - 如何使用socket.io从客户端创建多个websocket连接?

java - Android 的套接字扫描

c - 使用 C 无法从 TCP 套接字正确接收数据

javascript - 突出显示当前日期

javascript - 如何用正则表达式替换 Javascript 中的 "value"?

node.js - 有没有办法从 Microsoft Bot Framework 中的 WaterfallStepContext 主动结束提示,即使用计时器或事件

c# - SocketException 阻止在 Windows 服务中使用 C# TCPListener