【问题标题】:Socket.io with two node.js servers?带有两个 node.js 服务器的 Socket.io?
【发布时间】:2015-01-18 07:26:11
【问题描述】:

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

Server.js 本地主机: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?

【问题讨论】:

  • 我很困惑,因为有人告诉我要设置一个 redis 服务器,但这似乎有点矫枉过正,我真的不明白这意味着什么。我经常遇到github.com/automattic/socket.io-client,我认为这可能是一个解决方案?

标签: javascript node.js sockets


【解决方案1】:

我想通了,这真的很简单。可以有两台节点服务器,但只有一台服务器需要使用 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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2016-05-24
    • 2018-12-15
    相关资源
    最近更新 更多