我在一个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
通过任何方法都可以实现这一目标吗?
答案 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' });
});