1

最近、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', {});

そして、それは機能しません、同じエラー、異なる行。

私は何が間違っているのですか?

4

1 に答える 1

4

の戻り値を保存して操作する必要がありますsocketio.listensocket.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', {});
于 2012-07-25T10:59:49.717 に答える