Socket.io 触发两个 node.js 应用程序之间的事件?
Socket.io trigger events between two node.js apps?
我有两台服务器,一台用于后端应用程序,一台用于前端。它们是抽象的,但共享同一个数据库,我需要两者使用 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);
我如何使用端口 [=16 在前端触发 messageFromClient
=] 从后端端口提交 3100
?
对于这个用例,您真的不需要在前端启动 socket.io 服务器。
让它工作的方法是:
- 保持后端不变,充当 Socket.IO 服务器
- 在字体端使用 Socket.IO 客户端连接到服务器。
您可以调用
安装客户端
npm 安装socket.io-客户端
然后使用 :
连接到服务器
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' });
然后您可以使用相应的用户名创建套接字对象映射,并根据您的业务逻辑向该用户发送消息。
更多信息:
您可能必须添加客户端断开连接等情况。您可以在此处阅读有关回调的更多信息:
我有两台服务器,一台用于后端应用程序,一台用于前端。它们是抽象的,但共享同一个数据库,我需要两者使用 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);
我如何使用端口 [=16 在前端触发 messageFromClient
=] 从后端端口提交 3100
?
对于这个用例,您真的不需要在前端启动 socket.io 服务器。
让它工作的方法是:
- 保持后端不变,充当 Socket.IO 服务器
- 在字体端使用 Socket.IO 客户端连接到服务器。
您可以调用
安装客户端npm 安装socket.io-客户端
然后使用 :
连接到服务器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' });
然后您可以使用相应的用户名创建套接字对象映射,并根据您的业务逻辑向该用户发送消息。
更多信息:
您可能必须添加客户端断开连接等情况。您可以在此处阅读有关回调的更多信息: