一起使用meteor和socket.io
我是Meteor
新手。
我正在开发一个realtime multiplayer game
。 我想实现一切有关游戏,但游戏引擎状态与Meteor
。 例如聊天消息,可用的游戏室,邀请函,在线成员等。我想用Meteor
来实现这些function。
但是我想用socket.io
手动实现游戏状态。 因为游戏是实时的,每45毫秒(在我的体系结构中),游戏状态将stream向客户端,我认为meteor不是为了这个而不是灵活的。 于是我开发了多人游戏的概念,并将客户端和服务器与socket.io
同步。 这是没有问题的。
我想用Meteor
和socket.io
两者并用。 我试图实现它。 我在我的meteor应用.meteor/local/build/programs/server/app
下安装了socket.io
,内部是.meteor/local/build/programs/server/app
app。 在那之后,我在server side Meteor startup
包括require
声明;
Meteor.startup(function () { var require = Npm.require; var sio = require('socket.io') var socketIO = sio.listen(this.http) socketIO.configure(function () { socketIO.set('log level', 0); socketIO.set('authorization', function (handshakeData, callback) { callback(null, true); // error first callback style }); socketIO.set("transports", ["xhr-polling"]); socketIO.set("polling duration", 30); }); socketIO.sockets.on('connection', function (client) { console.log(client.id + ' is connected') client.on('disconnect', function () { console.log(client.id + ' is diconnected') }); })})
我把连接声明放在client side Meteor startup
;
Meteor.startup(function () { socket = io.connect(); socket.on('connect', function () { console.log('connecting'); }); })
在客户端, io
variables未定义错误发生。 在我看来, Meteor
不会在客户端导入客户端socket.io.js
。 所以我试图把socket.io.js
手动放在客户端文件夹下,在客户端加载。 这不是我知道的好方法,我不应该这样做。 但是,即使我和客户端加载它,关于语句的io
传输variables还有另一个客户端错误;
io.transports.push('xhr-polling');
它说Uncaught TypeError: Cannot call method 'push' of undefined
。 不知何故,客户端socket.io.js
不能正确加载。
我找不到一个Meteor和socket.io一起使用的例子。 有没有简单的方法来一起使用它们?
谢谢!