Articles of websocket

在浏览器中接收WebSocket ArrayBuffer数据 – 接收string

我有一个node.js服务器应用程序和一个浏览器客户端。 发送ArrayBuffer数据浏览器 – >服务器工作正常,但服务器 – >浏览器产生一个string"[object ArrayBuffer]"被接收。 这发生在Chrome和Firefox的最新版本中。 服务器: var serverPort = 9867; // dependencies var webSocketServer = require('websocket').server; var http = require('http'); var players = {}; var nextPlayerId = 0; // create http server var server = http.createServer(function(request, response) { }); server.listen(serverPort, function() { console.log((new Date()) + " Server is listening on port " […]

使用node.js / socket.io构build一个实时的大型多人游戏有多昂贵?

您好,我正在尝试使用node.js和socket.io构build一个实时多人游戏。 现在,在编码方面实现本身并不是什么大问题,但是来自传统的http请求响应web编程模型,我不知道在stream量和服务器负载方面会有多昂贵。 基本上在游戏期间,玩家的浏览器应当跟踪实时的鼠标input事件,并且将其广播给同一游戏中的所有其他玩家。 下面是一个例子,假设我的头像围绕我的鼠标指针在屏幕上显示,并且应该实时播放给屏幕上的其他玩家。 我会做这样的事情: // client side $(document).on("mousemove", function(event){ io.emit("coordinate", {x: event.pageX, y: event.pageY}); }); 并在服务器上: // server side io.sockets.on("connection", function(socket){ … socket.on("coordinate", function(coordinate){ socket.get("username", function(err, username){ socket.broadcast.emit("move", {username: username, coordinate:coordinate}); }); }); … }); 我认为这应该起作用,但是这需要浏览器每秒向服务器发送几个事件,随后应该向同一游戏中的其余玩家广播它们,并且我担心这个事情的含义。 有一件事是,每个传输的数据片段的大小不是那么大(基本上只是一个x和y坐标)。 如果这太贵,不pipe这个游戏多么伟大,我都不认为我能发货。 谁能开导我吗? 谢谢。 [编辑]澄清,我不问如何使这个架构更有效率。 我只想知道这种types的系统在系统负载(和维护成本)方面是否足够现实对于普通的Web服务,我可以通过查看页面视图数字来估计成本,但websocket是一个全新的领域,我不知道的,所以我想问。

额外的参数与socket.io

我怎样才能发送额外的参数与socket.io中的连接? 所以当一个客户端连接时,他们会发送额外的信息,并在服务器端收到 io.on('connection', function(client, param1, param2, param3) { // app code }

我应该在什么端口上运行我的Socket.IO服务器?

有没有build议的端口来运行Socket.IO服务器? 目前,我在端口6001,6002和6003上运行Socket.IO。但是,我发现有些人连接到它们时遇到问题,所以我想知道是否有更好的使用方法。

为什么JSON比BSON更快?

阅读完这篇文章后 ,有一个引人注目的话: BSON也被devise为快速编码和解码。 例如,整数存储为32(或64)位整数,所以它们不需要从文本中parsing出来。 这对于小整数使用比JSON更多的空间, 但parsing起来要快得多 。 从我正在阅读的内容来看,使用BSON的全部重点是因为它对CPU的征税较less,编码/处理速度更快。 但是,我使用Node.js做了一些testing,并使用本机JSON方法将BSON吹出水面。 一些testing显示JSON速度快了3到5倍。 (当使用更多的数据types时,大约在6到8之间)。 基准代码: var bson = require('bson'); var BSON = new bson.BSONPure.BSON(); var os = require('os'); console.log(" OS: " + os.type() + " " + os.release() + " (" + os.arch() + ")"); console.log("RAM: " + os.totalmem() / 1048576 + " MB (total), " + os.freemem() […]

Node.js + Socket.io + Apache

我正在寻找一种方法来整合Node.js + Socket.io + Apache的方式如下:我希望apache继续提供HTML / JS文件。 我想node.js监听端口8080上的连接。就像这样: var util = require("util"), app = require('http').createServer(handler), io = require('/socket.io').listen(app), fs = require('fs'), os = require('os'), url = require('url'); app.listen(8080); function handler (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); }); } io.sockets.on('connection', function […]

Websocket不能在heroku中使用socket.io

我的应用程序工作正常与socket.io使用websockets和xhr-polling本地主机,它与heroku中的xhr-polling工作,但由于heroku提供了对websocket的支持,我不能使用websockets工作。 我的Chrome控制台显示以下消息: WebSocket connection to 'ws://<myherokuapp>.herokuapp.com/socket.io/1/websocket/HBWE2BFvHahlSWk5ppHP' failed: Unexpected response code: 503 我已经启用websocket实验室。 是否有使用socket.io的websocket的任何工作的例子?

Socket.io通过websockets – 随机的“传输结束”断开连接

运用 Web应用程序。 NodeJS + Socket.io(仅限websocket,心跳启用)。 问题 我的应用程序工作正常(它连接到Socket.io,它发出/正确接收消息),但我检测到随机断开,而不是因为心跳超时。 即使服务器收到来自客户端的心跳包,仍然有可能在几秒钟内断开该客户端。 我不明白原因。 它几乎是随机发生的, 大约每3-15分钟一次 。 更改socket.ioconfiguration似乎不影响频率。 这里是日志,它清楚地表明,断开连接的原因不是心跳超时 ,而是一个传输结束(套接字结束) : 日志: debug: emitting heartbeat for client cTVCsv2GS2R_lh3Ecao- debug: websocket writing 2:: debug: set heartbeat timeout for client cTVCsv2GS2R_lh3Ecao- debug: got heartbeat packet debug: cleared heartbeat timeout for client cTVCsv2GS2R_lh3Ecao- debug: set heartbeat interval for client cTVCsv2GS2R_lh3Ecao- info: transport end […]

用ws和websocket-stream在node.js中stream数据

我试图使用websockets将数据从服务器stream式传输到客户端 – 特别是ws和websocketstream。 然而,这个stream似乎太早closures了,我只收到两块值得的数据。 这是一个简单的例子。 我有一台服务器: var WebSocketServer = require('ws').Server; var websocketStream = require('websocket-stream'); var wss = new WebSocketServer({port: 8098}); var fs = require('fs'); var util = require('util'); wss.on('connection', function connect(ws) { var stream = websocketStream(ws); var rs = fs.createReadStream('foo.big'); rs.pipe(stream); }); 和一个使用pipe()将foo.big连接到本地文件的客户端: var fs = require('fs'); var util = require('util'); var websocket = require('websocket-stream'); […]

随机错误的请求400与Socket.io 1.0.6错误

我在端口8082上使用Node.js,在端口80上使用Apache。 一切工作正常,并比浏览器开始显示错误消息“400错误请求”,CORS错误。 服务器正在设置CORS头。 正如你所看到的我也使用Redis适配器。 var io = require('socket.io').listen(8082); io.adapter(redis({ host: '127.0.0.1', port: 6379 })); io.set('origins', 'domain.com:*'); 不能说为什么有些时候一切正常,有些时候没有。 当Socket.io尝试从池中升级到websocket时,总是发生错误。 当我从https://cdn.socket.io/socket.io-1.0.6.js使用客户端时,我得到了更less的错误。 当我使用socket.io-1.0.6.js的本地参考时,错误发生频率更高。 找不到错误模式。 在erros之后,我重新启动Node.js服务器,尝试一些请求,一次又一次的工作,错误。 有些时候再次运行而不重新启动服务器。 请求标头示例 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3 Cookie io=RjKzZ6Y1OTQeSEsPAAAL; SGM_DESENV=cb5ae798c2f6f5d3f38c6ed16a6e4696 Host 200.238.251.79:8082 Origin http://200.238.251.79 Referer http://200.238.251.79/maximiliano/sgp/admin/custodiacompartilhada/add User-Agent Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0 响应标题示例 Access-Control-Allow-Credentials true Access-Control-Allow-Origin http://200.238.251.79 Connection keep-alive […]