Socket.io触发两个node.js应用程序之间的事件?

我有两个服务器,一个用于后端应用程序,另一个服务于前端。 它们是抽象的,但共享相同的数据库,我需要两个之间使用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); }); }); 

作为pipe理员,我想login到我的后台,在那里我可以看到所有login的人,在那里我可以点击我想与谁聊天。

说他们login到前端网站,当pipe理员提交消息客户端他们触发这个socket.emit('messageFromClient', Message); 我怎么能触发messageFromClient的前端使用端口9200提交从后端端口3100

你真的不需要在这个用例的前端启动socket.io服务器。

你可以得到它的工作方式是:

  1. 保持后端,因为它是一个Socket.IO服务器
  2. 在字体端使用Socket.IO客户端连接到服务器。

您可以通过调用来安装客户端

npm安装socket.io-client

然后使用以下命令连接到服务器:

 var io = require('socket.io-client'), socket = io.connect('localhost', { port: 3100 }); socket.on('connect', function () { console.log("socket connected"); }); socket.emit('messageFromClient', { user: 'someuser1', msg: 'i am online' }); 

然后,您可以使用相应的用户名创build套接字对象的映射,并根据您的业务逻辑向该用户发送消息。

更多信息 :

您可能需要添加客户端断开连接等情况。您可以在这里阅读更多有关回拨的信息:

https://github.com/Automattic/socket.io-client