【发布时间】:2015-03-13 06:00:32
【问题描述】:
我有两台服务器,一台用于后端应用程序,一台用于前端。它们是抽象的,但共享同一个数据库,我需要两者使用 socket.io 在彼此之间进行实时事件通信。
前端
// serves a front end website
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);
io.sockets.on('connection', function(socket) {
socket.on('createRoom', function(room) {
socket.join(room); // use this to create a room for each socket (room) is from client side
});
socket.on('messageFromClient', function(data) {
console.log(data)
socket.broadcast.to(data.chatRoom).emit('messageFromServer', data);
});
});
后端
//Serves a back end app
var appPort = 3100;
var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
socket.on('createRoom', function(room) {
socket.join(room); // use this to create a room for each socket (room) is from client side
});
socket.on('messageFromClient', function(data) {
console.log(data)
socket.broadcast.to(data.chatRoom).emit('messageFromServer', data);
});
});
作为管理员,我想登录到我的后端,在那里我可以看到所有登录的人,在那里我可以点击我想与之聊天的人。
假设他们登录到前端网站,当管理员提交消息客户端时,他们会触发socket.emit('messageFromClient', Message); 我如何使用端口9200 在前端触发messageFromClient 从后端端口提交@ 987654328@?
【问题讨论】:
-
两个socket.io实例之间使用redis通信怎么样? Redis-socket.io
-
有人建议,我想做,但在我追求这个想法之前,我想了解为什么它会是有益的。您能否发布一个答案来演示 redis 服务器将扮演什么角色。我很困惑应该在哪里托管和部署 redis 服务器。我会阅读您提供的链接并尽可能仔细地研究它。
-
我之前遇到过那个 npm 模块,但同样的事情是我需要设置第三个节点服务器,还是将它安装在我现有的服务器之一上?我需要更好地了解它所扮演的角色。我相信这是最好的解决方案。
-
Redis 主要用于将消息(事件)同步到多个服务器,因此如果您有多个 nodejs 服务器,您可以使用 redis-socketio 模块连接它,并且一旦在任何一个接收到消息server ,redis 会将此消息发送到所有其他连接的服务器。 Redis 可以安装在运行应用程序的同一台服务器上。 More about redis usage and deployment
-
感谢您的解释,我一直在阅读它。我只是对使用它持怀疑态度,因为我不想设置第三台服务器。
标签: javascript node.js sockets socket.io