可以't从套接字连接外部定义的方法发出
Can't emit from method defined outside of socket connection
我正在尝试使用自定义对象的方法来向套接字连接发射。对象是在套接字连接外部定义的,但随后在套接字连接内部实例化。代码和错误如下。
app.js
...
io.sockets.on('connection', function (socket) {
report = new Report();
socket.on('dataChange', function(newData) {
report.update(newData);
});
});
function Report () {
this.update = function (data) {
socket.emit('updateReport', { data: data });
}
}
错误
节点给了我以下错误。
socket.emit('updateReport',{data:data})
^ReferenceError:套接字未定义
您可以将socket
传递给Report
,如下所示:
io.sockets.on('connection', function (socket) {
report = new Report(socket);
socket.on('dataChange', function(newData) {
report.update(newData);
});
});
function Report (socket) {
this.update = function (data) {
socket.emit('updateReport', { data: data });
}
}
这样,socket
在Report
中是可访问的。
但是,您使用report
作为连接处理程序的而非本地变量。您确定没有在连接之间覆盖report
吗?您似乎更希望每个连接都有一个报告。在这种情况下,在report
赋值之前加上var
。
相关文章:
- 如何在定义js文件后为外部javascript文件设置变量
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 定义函数时,如何捕获外部变量的当前值
- Rally SDK外部开发Rally环境未定义
- 函数从$(document).ready外部调用在$(document).ready中定义的函数
- JavaScript未定义的函数外部JavaScript文件
- 取消重置由外部样式表定义的样式
- JavaScript-如何将onload函数内部定义的变量取到外部
- 为什么嵌套的 describe() 块不能看到在外部块中定义的变量
- 调用插件外部的自定义函数并传递参数
- 得到"未定义“;从外部javascript加载函数
- 无法读取属性'来自JS'外部viewmodel.js中未定义的
- 加载外部脚本时,匿名定义()模块不匹配
- 使用外部单击关闭自定义指令弹出框
- 在预先存在的命名空间中定义所有外部 JavaScript
- 如何在 AngularJS 中将自定义指令与外部 HTML 模板捆绑在一起
- 从外部文件在打字稿中声明变量得到引用错误:..未定义
- 使用调试器从内部函数调用外部函数中定义的变量
- 为什么不在对象外部使用属性定义语法是语法错误
- 定义外部JS文件的执行上下文