【问题标题】:Can't emit by socket.io?不能通过 socket.io 发射?
【发布时间】:2012-07-25 18:59:49
【问题描述】:

我最近将 socket.io 更新到最新版本 0.9.8

上次我使用该应用程序时,我做了这样的事情:

io.sockets.emit("logged",this);

它奏效了。现在我明白了:

TypeError: Cannot call method 'emit' of undefined
    at new Agent (/var/www/panel/models/agent.js:29:16)
    at module.exports (/var/www/panel/modules/app.js:35:47)
    at Query.Client.query (/var/www/panel/node_modules/mysql/lib/client.js:108:11)
    at Query.EventEmitter.emit (events.js:85:17)
    at Query._handlePacket (/var/www/panel/node_modules/mysql/lib/query.js:51:14)
    at Client._handlePacket (/var/www/panel/node_modules/mysql/lib/client.js:319:14)
    at Parser.EventEmitter.emit (events.js:88:17)
    at Parser.write.emitPacket (/var/www/panel/node_modules/mysql/lib/parser.js:71:14)
    at Parser.write (/var/www/panel/node_modules/mysql/lib/parser.js:576:7)
    at Socket.EventEmitter.emit (events.js:88:17)

我认为这是因为范围或其他原因,所以我这样做了:

// server.js
var express = require('express'),
    server = express(),
    Routes = require('./routes'),
    App = require('./modules/app.js'),
    database = require('./libraries/mysql.js'),
    io = require('socket.io'),
    mysql = require('mysql');


server.listen(8080);
io.listen(server);
io.sockets.emit('Hi there', {});

它只是不起作用,同样的错误,不同的行。

我做错了什么?

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    您需要保存socketio.listen 的返回值并与之交互。我建议您按照socket.io 的示例进行操作。像这样的东西应该可以解决问题:

    var express = require('express'),
        server = express(),
        socketio = require('socket.io');
    
    server.listen(8080);
    var io = socketio.listen(server);
    io.sockets.emit('Hi there', {});
    

    甚至:

    var express = require('express'),
        server = express(),
        io = require('socket.io').listen(server);
    
    server.listen(8080);
    io.sockets.emit('Hi there', {});
    

    【讨论】:

    • 感谢您的回答。我现在感觉很笨......但是我不得不添加这个:socketio = require('socket.io'), io = socketio.listen(server.listen(8080)); 因为是最新版本的 express。
    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    相关资源
    最近更新 更多