我如何有io.sockets.on调用外部/全局函数
How do I have io.sockets.on call an external/global function?
在Node.js中,我有以下代码可以正常工作:
var io = require('socket.io').listen(8082);
io.sockets.on('connection', function (socket) {
socket.on('message', function (msg) { console.log("message"); console.log(msg); socket.send('Your msg received [[' + msg + ']]'); });
socket.on('disconnect', function () { console.log("disconnect"); });
});
…但我想做的是以某种方式调用一个函数"外部":
function fnParseMsg(msgArgInFunction)
{
// do some stuff with the msg...
console.log("message"); console.log(msgArgInFunction); socket.send('Your msg received [[' + msgArgInFunction + ']]');
};
var io = require('socket.io').listen(8082);
io.sockets.on('connection', function (socket) {
socket.on('message', fnParseMsg(msg));
socket.on('disconnect', function () { console.log("disconnect"); });
});
我想象我需要使用闭包;
要设置回调,你只需传递函数,而不是调用它,除非你调用的函数返回一个函数
socket.on('message', fnParseMsg);
由于您希望在需要传递的fnParseMsg
函数中使用socket
,因此可以通过两种方式执行
socket.on('message', function(msg){
fnParseMsg(msg,socket);
});
或者使用bind
socket.on('message', fnParseMsg.bind(null,socket));
bind
调用将在函数调用时将socket
添加到参数列表中。您需要修改fnParseMsg
声明,使其具有socket
参数
//For the first snippet using the anonymous function
function fnParseMsg(msgArgInFunction,socket) {
//For the second snippet using bind
function fnParseMsg(socket,msgArgInFunction) {
相关文章:
- 函数从$(document).ready外部调用在$(document).ready中定义的函数
- 访问外部调用方函数参数
- EmberJS - 使用几个解决方案从外部调用组件方法(呼吁讨论)
- 如何在对象生成器外部调用对象属性值
- 任何理由从外部调用Backbone.View.render
- JS:从函数外部调用变量
- 在指令外部调用范围变量
- AngularJS:使用虚拟机从外部调用控制器功能
- 如何从表单外部调用各种输入的重置
- 通过 .scope().call() 从 JS 外部调用 Angular 服务会挂起请求
- 如何通过Javascript或Jquery从控制器外部调用Angular JS函数
- 如何从表单外部调用表单的post操作
- 如何从javascript函数外部调用以$开头的Jquery函数
- 从外部调用函数内部的 JavaScript 变量
- 如何判断Iframe何时调用了外部调用页面中的所有链接
- 从YUI沙盒外部调用函数
- 如何从外部调用Angularjs工厂函数
- 从document.ready外部调用document.ready.内部的函数
- 从视图模型外部调用knockout.js中的函数
- (跨域)禁止从iframe外部调用父函数