socket.io从object方法调用emit不起作用

时间:2015-10-14 21:27:42

标签: javascript node.js express socket.io

在我的socket.io游戏中,我有一个包含类bot.js的文件BotPlayer,如果另一个人类玩家不可用,它将与人类玩家一起玩。我希望机器人有一个方法makeMove,它会向人类玩家发出动作。我知道正在执行makeMove方法,但是我无法触发emit()函数。

bot.js:

var BotPlayer = function (partner) {
    this.partner = partner;
    ...
    this.submitScore = function(score) {
        console.log('SUBMIT_SCORE')
        module.exports = function (io) {
        this.partner.emit('message', {message: this.username + "'s score:   " + score})
            }
    };

exports.BotPlayer = BotPlayer

socket.js:

var Bot = require('../bot/bot');
io.sockets.on('connection', function (client) {
client.on('botPlay', function (user) {
var botPlayer = new Bot.BotPlayer(client);

client.emit('message', {message: "You have joined a game with " + botPlayer.username + "!"})
client.emit('start');
 botPlayer.play();
}

}

在我的主node.js文件中,我有:

// socket.io
var io = require('socket.io').listen(app.listen(port));
require('./routes/socket.js')(io);

如果我补充一点:

require('./bot/bot.js')(io);

我得到TypeError: object is not a function

然后,如果我将整个bot.js包装在:

module.exports = function (io) {...};

我似乎无法导出BotPlayer类,并得到:

ReferenceError: BotPlayer is not defined

如何在BotPlayer方法中实现emit函数 哪个可以与其“伙伴”,客户沟通?

编辑:在jfriend00的请求下,这里是相关文件的完整代码:

http://pastebin.com/3MMscP9j

http://pastebin.com/5QXs36HT

http://pastebin.com/nWJ4rQfD

0 个答案:

没有答案