如何在Node js中使用Socket.io-client连接两个Socket.io节点应用程序 [英] How to connect Two Socket.io Node Application using Socket.io-client in Node js
问题描述
第一个节点应用程序
var express = require('express')
,http = require('http');
var app = express();
app.use(function(req,res){
app.use(express.static(__ dirname +'/ public'));
}) ;
var server = http.createServer(app);
var io = require('socket.io')。listen(server);
server.listen(3000);
io.sockets.on('connection',function(socket){
socket.on('eventFiredInClient',function(data){
socket.emit('secondNodeAppln',data); //我需要在我的第二个节点应用程序中获取此事件我如何使用socket.io-client
});
});
第二个节点应用程序
var express = require('express');
var http = require('http');
var app = express();
app.configure(function(){
app.use(express.static(__ dirname +'/ public'));
});
var server = http.createServer(app);
var serverAddress ='127.0.0.1';
var serverPort = 3000; // first node appln port
var clientio = require('socket.io-client');
var socket = clientio.connect(serverAddress,{port:serverPort});
socket.on('connect',function(){
console.log('connected');
});
socket.on('disconnect',function(){
console.log('disconnect');
});
var io = require('socket.io')。listen(server);
server.listen(6509);
//这里我需要获取第一个节点应用程序中引发的'secondNodeAppln'事件。我如何做到这一点。
你需要创建一个socket.io客户端第一个应用程序:
var io = require('socket.io')。 //这是socket.io服务器
var clientio = require('socket.io-client'); //这是socket.io客户端
var client = clientio.connect(...); //连接到第二个应用程序
io.sockets.on('connection',function(socket){
socket.on('eventFiredInClient',function(data){
client.emit('secondNodeAppln',data); //将其发送到您的第二个应用程序
});
});
在您的第二个应用程序中,只要听这些事件:
io.sockets.on('connection',function(socket){
socket.on('secondNodeAppln',function(data){
});
});
有一些竞争条件,因为上面的代码不等待一个连接
事件在客户端套接字传递之前。 https://gist.github.com/robertklep/5500797rel =nofollow>这个要点用于独立演示。将三个文件保存到目录中,启动服务器:
node serverserver&
node clientserver
并打开 http:// localhost:3012
。
In my application i need to connect two socket.io node applications.Using socket.io-client we can do like this.But i don't know how socket.io-client works and where to include that.
First Node Application
var express = require('express')
, http = require('http');
var app = express();
app.use(function (req, res) {
app.use(express.static(__dirname + '/public'));
});
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(3000);
io.sockets.on('connection',function(socket){
socket.on('eventFiredInClient',function(data){
socket.emit('secondNodeAppln',data);// i need to get this event in my 2nd node application how can i do this by using socket.io-client
});
});
Second Node Application
var express=require('express');
var http=require('http');
var app=express();
app.configure(function(){
app.use(express.static(__dirname + '/public'));
});
var server = http.createServer(app);
var serverAddress = '127.0.0.1';
var serverPort = 3000; //first node appln port
var clientio = require('socket.io-client');
var socket = clientio.connect(serverAddress , { port: serverPort });
socket.on('connect', function(){
console.log('connected');
});
socket.on('disconnect', function(){
console.log('disconnected');
});
var io = require('socket.io').listen(server);
server.listen(6509);
//here i need to get the 'secondNodeAppln' event raised in first node application.How can i do this.
You need to create a socket.io client in your first app:
var io = require('socket.io').listen(server); // this is the socket.io server
var clientio = require('socket.io-client'); // this is the socket.io client
var client = clientio.connect(...); // connect to second app
io.sockets.on('connection',function(socket) {
socket.on('eventFiredInClient',function(data) {
client.emit('secondNodeAppln', data); // send it to your second app
});
});
And in your second app, just listen for those events:
io.sockets.on('connection', function (socket) {
socket.on('secondNodeAppln', function(data) {
...
});
});
There's a bit of a race condition because the code above doesn't wait for a connect
event on the client socket before passing events to it.
EDIT see this gist for a standalone demo. Save the three files to a directory, start the servers:
node serverserver &
node clientserver
And open http://localhost:3012
in your browser.
这篇关于如何在Node js中使用Socket.io-client连接两个Socket.io节点应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!