在多个客户端javascript文件之间传递套接字
Passing socket between multiple client side javascript files
我最近开始用javascript编写一个小型网络游戏。最近,我开始重构代码,使用node.js和socket.io来制作多人游戏。
我的问题是,我想将客户端套接字变量传递给多个客户端javascript文件,但我找不到解决方案。
在客户端/app.js:中
var app = (function() {
...
var socket = io.connect('http://localhost:8080');
socket.on('connect', function() {
dice.setSocket(socket);
});
...
})();
在client/dice.js:中
var dice = (function() {
...
var gameSocket;
if (gameSocket) {
gameSocket.on('dice rolling', function(data) {
playDiceAnim(data);
});
}
function setSocket(socket) {
gameSocket = socket;
}
})();
不幸的是,当"掷骰子"事件从服务器端发出时,playDiceAnim(数据)永远不会执行。但是,我知道app.js正在接收"掷骰子"事件。例如,如果在app.js中我输入:
var app = (function() {
...
var socket = io.connect('http://localhost:8080');
socket.on('dice rolling', function() {
console.log('event received');
});
...
})();
然后,开发人员工具控制台中的结果是:
'event received'
我可以在网上找到的例子要么将所有客户端javascript放在.html文件中的脚本标记中,要么放在一个.js文件中。但是,我希望更模块化。
如何将客户端套接字适当地传递和使用到其他客户端文件?
这是完整的代码。小心bug,它正在重构过程中。此外,如果有任何建议,我将不胜感激,因为我对javascript和node.js还相当陌生。
以下是我的建议:
首先加载应用程序脚本,并通过以下方法使套接字对其他调用方可用:
var app = (function() {
...
var socket = io.connect('http://localhost:8080');
return {
getSocket: function() { return socket;}
}
...
})();
var dice = (function() {
...
var gameSocket = app.getSocket();
if (gameSocket) {
gameSocket.on('dice rolling', function(data) {
playDiceAnim(data);
});
}
})();
在这种情况下,我认为app
作为服务提供商(如连接的webSocket)以及其他模块从应用程序请求该信息更有意义。但是,这实际上取决于您希望哪个模块更通用,而不是依赖于其他模块。任何一种情况都可能发生。
相关文章:
- 如何使用HTML5与UDP套接字通信
- 在node.js中写入ECONNRESET错误和套接字连接检查
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 套接字服务器向客户端广播,但不从两者接收
- 如何确定套接字中的变量是否匹配
- 如何通过网络套接字连接到树莓派上的Mosquitto经纪人
- 快速的套接字 io 实例/中间件
- PHP:Web套接字和html 5
- 无法从客户端发出套接字消息
- STOMP web套接字回调不'不起作用
- Will my'新对象'在套接字断开连接时被垃圾收集
- 套接字服务器在本地获得500毫秒的往返时间
- 在 HTML5 和 C# Web 套接字通信之间
- 套接字之间的双工管道似乎在 NAT 后面中继 TLS 以进行 SMTP,但只是有时
- 安卓应用和网络浏览器之间的套接字通信
- 客户端Java服务器与Javascript之间的套接字通信
- 为什么套接字之间的数据传输需要很多时间
- 在多个客户端javascript文件之间传递套接字
- 如果一个应用程序打开了2个TCP套接字,是否在这两个套接字之间都保持有序属性?
- Nodejs, express &套接字.两个静态客户端页面之间的IO通信