【问题标题】:Socket.IO: How to communicate/exchange data between socket.on() event in the same server?Socket.IO:如何在同一服务器中的 socket.on() 事件之间通信/交换数据?
【发布时间】:2013-12-10 08:45:30
【问题描述】:

我在一个 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

是否有可能通过任何方法实现这一目标?

【问题讨论】:

    标签: javascript node.js callback socket.io


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-12-31
        • 1970-01-01
        • 2020-03-08
        • 2017-01-29
        • 2016-08-20
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多