Tag: socket.io

Websocket间隔:移动设备上的性能问题?

在我目前的项目中,我发现在移动设备上使用带有socket.io和node.js的websockets是个问题。 似乎在一个时间间隔内移动设备处理套接字消息存在问题。 我将其减less到最小的情况: 服务器(最小的express.js服务器)以特定的时间间隔向客户端发送消息: setInterval(function(){ socket.emit('interval'); }, 500); 客户端只是在收到的消息之间的时间消息并显示它们: socket.on('interval', function (data) { timeElement.html(new Date() – startTime); startTime = new Date(); }); 在desktop (使用Chrome),消息之间的结果时间在515 ms相当稳定。 所以它像一个15毫秒的延迟,但消息间隔是一致的。 在mobile device (我正在使用Galaxy Nexus和Chrome)时间between 400 and 600 ms变化,无论哪种方式都会出现更多的极端峰值。 我想用这样的间隔作为游戏转向指示器,这个问题导致移动设备上很多滞后和不均匀的玩家移动。

有些用户无法连接到websocket

我正在使用socket.io.Some用户发送消息给我'我无法发送消息为什么'我研究了这个问题,猜测防火墙或防病毒阻塞websocket.If浏览器不支持websocket,socket.io自动切换到xhr轮询,这是没有问题的。但是,如果浏览器支持websocket和防病毒或防火墙阻止websocket,socket.io不切换到xhr,并且用户不能发送消息。如何解决这个问题? 这里是一个websockettesting报告的用户 http://websocketstest.com/result/244711 Websocket的支持是好的,数据接收是否定的。

重新使用套接字ID,socket.io,node.js

是否有可能重用一个socket.id或多次使用它? 我们假设用户在不同的浏览器标签中查看同一站点的多个页面。 我想用一个socket.id,socket来处理它们。 如果用户收到一个通知,它应该popup一个socket.emit的所有标签。

具有socket.io的单页应用程序中特定于部分的侦听器

我正在构build一个具有一些实时function的应用程序(通知,实时评论,…,当然还有经典的聊天室)。 它的结构是一个单一的页面应用程序。 我使用page.js来处理路由,require.js,现在还有一个简单的自定义mvc框架。 后端与节点和socket.io实时支持。 事情是,我有不同的部分,如家,post,聊天。 每个部分都是基于路由dynamic呈现的。 现在,我应该如何为每个部分绑定特定的套接字事件? 我不想听那些与当前观看部分无关的事件。 我应该每次创build一个新的连接用户更改该部分,目标不同的命名空间? 或者我应该删除套接字中的所有事件侦听器,并附加一组新的事件? 我不知道什么是最好的方法,或者如果socket.io是最好的select。 谢谢。

在Cloud9上发生错误“发送后无法设置标题”

在Cloud9 IDE上同时使用Express和socket.io时出现以下错误: http.js:707 抛出新的错误('发送后不能设置标题')。 ^错误:发送后无法设置标题。 在ServerResponse.OutgoingMessage.setHeader(http.js:707:11) 在ServerResponse.res.setHeader(/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/patch.js:59:22) (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/proto.js:153:13) 在Function.app.handle(/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/proto.js:198:3) 在Server.app(/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/connect.js:65:37) 在Manager.handleRequest(/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/socket.io/lib/manager.js:564:28) 在服务器。 (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/socket.io/lib/manager.js:118:10) 在Server.EventEmitter.emit(events.js:117:20) 在HTTPParser.parser.onIncoming(http.js:2056:12) 在HTTPParser.parserOnHeadersComplete [onHeadersComplete](http.js:120:23) 以下是我的server.js代码: var express = require('express'); var app = express() , http = require('http') , server = http.createServer(app) , io = require('socket.io').listen(server); server.listen(process.env.PORT, process.env.IP); app.get('/', function(req,res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World\n'); }) 我正在使用节点:“0.10.x”,socket.io:“0.9.14”,并表示:“3.x”。 这个错误只会在Cloud9 IDE上出现。 在本地主机上运行良好。 请帮忙。

WebRTC在本地服务器上运行良好,但是当我将它部署到VPS时,我只能看到localVideo,romoteVideo只不过是一个黑色的方形

WebRTC在本地服务器上运行良好,但是当我部署到VPS时,我只能看到localVideo,romoteVideo只是一个黑色的方块。 我的webrtc代码是: var socket = io.connect(); var remotevid = document.getElementById('webrtc-remotevid'); var localStream = null; var peerConn = null; var started = false; var channelReady = false; var mediaConstraints = {'mandatory': { 'OfferToReceiveAudio':true, 'OfferToReceiveVideo':true }}; var isVideoMuted = true; var videoCamera = new tracking.VideoCamera().hide().render().renderVideoCanvas(); function setLocalAndSendMessage(sessionDescription) { peerConn.setLocalDescription(sessionDescription); console.log("Sending: SDP"); console.log(sessionDescription); socket.json.send(sessionDescription); } function createOfferFailed() { […]

当第一个套接字连接时,两个图像被加载而不是一个 – Node.js

我正在尝试为我的游戏实现多人游戏function。 我正在使用node.js 当一个人连接时,图像应该被加载到浏览器。 相反,它加载两个图像。 inheritance人是我class的一部分 var count = 0; //Keep track of which player we're oparating on function Car(id){ var that = this; //Reference to 'this' this.loadHero = function(){ that.id = document.getElementById(id); //Store the id of our charakter $(that.id).css({"display" : "block"}); } } 客户端的node.js: var socket = io.connect('http://localhost:3000'); socket.on('entrance', function(data){ console.log(data.message); var num = (count […]

奇怪的行为在Redis + Node.js + Socket.io + Django /芹菜设置。 断开连接的套接字仍然收到消息

我面临着一个我自己无法解决的奇怪问题。 我build立了一个设置,通过Django / Celery定期任务发送JSON序列化消息。 此任务通过Redis与node.js服务器进行通信。 Node.js通过使用webbrowser的socket.io来处理通信。 Django /芹菜任务 @periodic_task(run_every=crontab()) # every minute def process_channels(): r = redis.StrictRedis(host='localhost', port=6379, db=0) for i in xrange(1,21): # 1..20 data_dict = {} data_dict['time'] = time.ctime(time.time()) data_dict['message'] = os.urandom(10).encode('hex') r.publish('channel', json.dumps(data_dict) ) time.sleep(2) node.js服务器 var http = require('http'); var server = http.createServer().listen(4000); var io = require('socket.io').listen(server); var querystring = require('querystring') […]

同一个socket.io接口可以支持传统的套接字连接以及websocket连接

我必须支持写入套接字的GPS设备,同时还需要支持移动设备的networking套接字。 相同的socket.io代码可以支持这两个吗?

socketIO-client – RuntimeError:超过最大recursion深度

我正在尝试使用socket.io与python侧的socketIO-client 0.5.1库进行node.js应用程序和python之间的通信。 下面是两个代码块: var http = require('http').createServer(); http.listen(6000); var io = require('socket.io').listen(http, { log: false }); var events = require('events'); var eventEmitter = new events.EventEmitter(); var counter = 0; io.sockets.on('connection', function (socket) { eventEmitter.on('observe', function(message){ socket.emit('sendVoltage', {}); }); socket.on('voltage', function (data) { console.log(counter + " – " + data.voltage); if (counter++ < 500) { eventEmitter.emit('observe', […]