node.js - 如何在 Node js 中使用 Socket.io-client 连接两个 Socket.io Node 应用程序

标签 node.js express socket.io

在我的应用程序中,我需要连接两个socket.io Node 应用程序。使用socket.io-client我们可以这样做。但我不知道socket.io-client如何工作以及在哪里包含它。

第一个 Node 应用

      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

    });

     });

第二个 Node 应用

    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.

最佳答案

您需要在您的第一个应用程序中创建一个 socket.io 客户端:

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
  });
});

在您的第二个应用程序中,只需监听这些事件:

io.sockets.on('connection', function (socket) {
  socket.on('secondNodeAppln', function(data) {
    ...
  });
});

存在一点竞争条件,因为上面的代码在将事件传递给客户端套接字之前不会等待客户端套接字上的 connect 事件。

编辑请参阅 this gist一个独立的演示。将这三个文件保存到一个目录中,启动服务器:

node serverserver &
node clientserver

并在浏览器中打开http://localhost:3012

关于node.js - 如何在 Node js 中使用 Socket.io-client 连接两个 Socket.io Node 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16331037/

相关文章:

node.js - 如何在不接受 Atlassian 设计指南许可的情况下使用 npm 包的替代实现来使用 Atlaskit

javascript - Gruntfile.js - 未找到任务 “default”

jquery - 无法从ejs获取数据到 Controller 和客户端JS

javascript - Mongoose,Socket.IO - 如果结果为空,则无法打印空字符串

javascript - 将 socket.io 加载到 JavaScriptCore for iOS

node.js - 如何使用node js管理系列函数调用

javascript - 如何从本地系统加载json文件并分配给某个变量

node.js - 如果express.js (node.js) http请求在完成之前关闭会发生什么?

javascript - Node JS HTTP 服务器 request.on ('data' ) 事件失败

python - 将简单的 Socket.io Flask 应用程序部署到 Google App Engine : Still Unsolved