Socket.io trigger events between two node.js apps?
我有两台服务器,一台用于后端应用程序,一台用于前端。它们是抽象的,但是共享同一个数据库,我需要两者都使用socket.io在彼此之间实时通信。
前端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // 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); }); }); |
后端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | //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.io服务器。
使它工作的方式是:
您可以通过调用
来安装客户端
npm install socket.io-client
,然后使用:
连接到服务器
1 2 3 4 5 6 | 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' }); |
然后,您可以使用相应的用户名创建套接字对象的映射,并根据您的业务逻辑向该用户发送消息。
更多信息:
您可能必须添加诸如客户端断开连接之类的案例。您可以在此处了解有关回调的更多信息:
https://github.com/Automattic/socket.io-client