Articles of websocket

监视谁在线?

使用socket.io,我可以可靠地指望connect和disconnect事件,以确定谁在线以及谁丢失或closures连接? 绑定heartbeat并确定谁是自己连接起来会更可靠吗? 谢谢!

在azure Ubuntu vm上设置一个支持websocket的应用程序

好的,所以我在azure色的云中创build了一个ubuntu vm,我已经成功地启动了nodejs,redis,socket.io,Express和我正在编写的游戏的所有组件。 我已经在内部和外部端口8080上设置了azure色的端点,并在我的js代码中使用app.listen(8080)。 当我浏览到http:// <app-name> .cloudapp.net:8080 /我可以很好地查看我的nodejs应用程序的结果,它显示html,css等 但是,当它试图启动一个套接字连接(使用socket.io),我只得到这个(在我的Chrome开发控制台下的websockets): HeadersPreviewResponseWebSocket Frames Request URL:ws://<app-name>.cloudapp.net:8080/socket.io/1/websocket/13510496541533398587 Request Method:GET Status Code:101 Switching Protocols Request Headersview source Connection:Upgrade Host:<app-name>.cloudapp.net:8080 Origin:http://<app-name>.cloudapp.net:8080 Sec-WebSocket-Extensions:x-webkit-deflate-frame Sec-WebSocket-Key:y5vueHE66phl70gle7KCtw== Sec-WebSocket-Version:13 Upgrade:websocket (Key3):00:00:00:00:00:00:00:00 Response Headersview source Connection:Upgrade Sec-WebSocket-Accept:dn+2lA6sMIXHLEmDS/Q4j/IIwxI= Upgrade:websocket (Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 当我尝试在客户端(浏览器)上使用socket.emit()发送任何东西时,它也会使azure上的nodejs应用程序崩溃。 在我的azure色ssh,它只是说'DEBUG:程序节点app.js退出代码为null'这不是特别有用。 所以显然不能正确连接? 我也尝试在我的nodejs侦听端口80,但是我甚至没有得到标准的网页(HTML,CSS等)。 从我在线阅读的内容来看,很有可能让套接字工作,让你不使用webangular色(我认为这个虚拟机不是)。 任何想法如何我能得到这个工作? (最好在端口80)? 编辑:开始怀疑这是否与套接字没有任何待办事项,意识到我得到了同样的交换协议消息,在我的家庭虚拟现实(在哪里工作)。 分离问题: 如何查看ubunu azure虚拟机上的nodejs程序的崩溃细节?

在javascript中测量websockets数据input/输出的大小

我想写一个testing来测量从node.js服务器通过websockets发送的数据的大小/数量,但我不知道如何去做。 消息是在JSON中。 有没有一种方法来测量JSON的大小或任何模块可以帮助? 我经常发送大量数据,并希望测量每秒的数据吞吐量。 提前致谢…

尝试通过npm在NodeJS中安装websocket模块时出错

当我尝试在websocket中安装websocket模块时,出现以下错误。 我试图在Ubuntu 12.04机器上。 ubuntu@domU-12-31-39-14-1A-A1:/var/www$ npm install websocket npm http GET https://registry.npmjs.org/websocket npm http 304 https://registry.npmjs.org/websocket > websocket@1.0.8 install /var/www/node_modules/websocket > node install.js [websocket v1.0.8] Attempting to compile native extensions. [websocket v1.0.8] Native code compile failed!! Please note that this module DOES NOT REQUIRE the native components and will still work without them, though not quite […]

node.jssubprocess和手动分离进程的区别?

我试图确定我的socket.io服务器的响应时间。 所以socket.io服务器只是回应一个消息,一个testing文件发送消息并logging发送和获取回显之间所需的时间。 为了模拟多个客户端,我使用一个manager文件中的child_process多次启动这个testing文件。 奇怪的是,我只用一个testing文件就得到了0.2的响应时间。 当我开始经理产生4个客户时,它达到了1.3,当我在两个分别的terminal上启动两个经理,每个客户有4个客户,每个客户达到3个左右。但是当我开始只有一个经理与10个客户(甚至达到疯狂像1000)结果保持在1以下。 为了再次certificate这一点: manager.js 4 -> spawns 4 childs manager.js 4 -> spawn 4 childs test.js -> shows around 3 avg. response time manager.js 10 -> spawns 10 childs test.js -> shows around 0.5 avg. response time 那么为什么多个分开的电话产生4个孩子更多的负载,然后一个电话与许多孩子? 这是我的经理文件产卵孩子: var count = process.argv[2] || 1; console.log("generating " + count + " childs"); […]

testing套接字是否仍然打开

按照我上一个问题的说明 ,我现在在socket.io中有一组连接的用户。 我的问题(我在答案中被警告)是,甚至在浏览器断开之后,套接字仍然保留在这个数组中。 我尝试从socket.on('disconnect'函数中删除数组中的socket.on('disconnect' ,但是在浏览器断开连接并且socket.io触发断开连接之间仍然存在〜1分钟的延迟。 什么是“testing”一个套接字来查看它是否真正活着的最好方法? 我很想尝试发送消息并捕获任何错误,但我觉得有一个更优雅的解决scheme。

Socket.io不从客户端发送数据到服务器

我似乎有一个使用socket.io从客户端到服务器的通信问题。 首先,我发送的JSON对象 loginInfo = { email: 'username', password: 'password' } 在客户端我有: socket.emit('user:login', loginInfo); 然后在服务器端,我有 socket.on('user:login', function(loginInfo) { console.log('data being sent is:\n' + loginInfo); }); 这将在控制台中打印出来: data being sent is: function ack() { self.log.debug('sending data ack packet'); socket.packet({ type: 'ack' , args: util.toArray(arguments) , ackId: packet.id }); } 同样如果我这样做 socket.on('user:login', function(loginInfo) { console.log('data being sent is:\n' […]

通过Websockets发送多点触摸事件

我试图将触摸事件对象编码为JSON通过websockets发送,出现一个错误: Uncaught TypeError:将圆形结构转换为JSON 如果直接具有作为对象本身的对象的属性,则会发生错误。 那么,通过websockets发送多点触摸事件的方式是什么? document.addEventListener('touchmove', function(event) { console.log(event); event = JSON.stringify(event.touches); // Error! connection.send(event); }, false); http://jsfiddle.net/PAVtk/

实时更新到NodeJS(MVC,Express),Mysql和Socket.io应用程序

我正在尝试使用Express框架和MySQL作为我的后端数据存储,使用带有MVC布局的NodeJS创build实时Web应用程序。 我遇到的问题是,我找不到任何好的示例或教程,关于如何使用Socket.io (或任何其他Web套接字平台从数据库实时传递信息到Web应用程序。问题是在特定的表上将任何新的MySQL更新传递给特定的表,以便如果通过第二个客户端连接将新的信息添加到数据库中,只要添加了信息,它就会在第一个客户端连接上更新。 有没有人有任何想法如何获得socket.io(或另一个websocket连接协议)和mysql一起工作来实现这一目标? 任何代码示例或指向我的一些网站有这个主题的文档,将不胜感激。 谢谢!

sockets.io发射有时会失败吗?

我有一个基于Web的多人游戏。 时不时发生某人被踢出,因为服务器没有得到客户的预期消息。 从我的日志,似乎客户端没有断开连接,只是没有发送消息或服务器没有收到它。 这里我的问题是“这个事情是否经常发生?” 我是否应该使用某种callback机制来确保消息已传递,如果不是再次发送或者是否存在某些我不知道的问题?