我正在尝试使用自定义对象的方法发送到套接字连接。该对象在套接字连接之外定义,但随后在其内部实例化。代码和错误如下。
...
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 });
}
}
Node给出了以下错误。
socket.emit('updateReport',{data:data});
^ReferenceError:未定义套接字
答案 0 :(得分:4)
您可以将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
吗?您似乎更希望每个连接都有一个报告。在这种情况下,请将var
添加到report
作业。