Socket.IO:如何在同一服务器中的socket.on()事件之间进行通信/交换数据?

时间:2013-11-25 14:59:52

标签: javascript node.js callback socket.io

我在一个socket.on事件下编写了一行代码,该事件是从客户端调用的,用于使用回调机制获取数据。
是否可以在两个socket.on事件之间进行通信,并使用同一服务器和同一文件中的回调交换数据?

有关。例如客户端和服务器之间的正常流程:

socket.emit('init',data,function(callbackFromServer)) //from client
          |      ^
          |      | server respond through callback to client
          V      |
socket.on('init',function(data, callback){/*....*/});  // to server  

我想实现相同的情况,但在服务器本身之间的两个socket.on()事件之间,要交换数据。即:

                         client  
                          |  ^
                          V  |
      socket.on('someEvent',function(data,callback1){/*....*/}) // some.js
                          |  ^
                          V  | // <-- I want to achieve this
      socket.on('init',function(data,callback2){/*.....*/})     // some.js

通过任何方法都可以实现这一目标吗?

2 个答案:

答案 0 :(得分:3)

我不确定我是否完全理解用例,但如果你只是想调用另一个函数,为什么不使用变量来引用这些函数呢?然后,您可以随时拨打电话。

var someEventFn = function(data, callback1) {
        initFn(data, function(result) {
            // here you have the result from the init method
        });
    },
    initFn = function(data, callback2) {
        // some js
    };

socket.on('someEvent', someEventFn);
socket.on('init', initFn);

然后你可以从initFn内部调用someEventFn,同时仍允许在socket.on事件中调用它。我是否正确理解了您的问题?

答案 1 :(得分:1)

在服务器端创建另一个套接字io客户端,然后使用该客户端调用该函数。

var socket = io.connect('http://localhost:port');
socket.on('connect', function () {  
  socket.emit('another function', { param1: 'value1' });
});