不能从套接字连接之外定义的方法发出
我试图使用自定义对象的方法发送到套接字连接。 该对象在套接字连接之外定义,但是在其内部被实例化。 代码和错误如下。
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
作为连接处理程序不是本地的variables。 你确定你没有覆盖连接的report
? 看来你宁愿每个连接报告。 在这种情况下,请在report
分配前添加var
。