Tag: websocket

如何更新房间内所有客户端的套接字对象? (socket.io)

io.sockets.on('connection', function(socket) { socket.object = socket.id; socket.on('updateObject', function(data) { // How to update socket.object here for all clients? }); }); 怎么做?

为什么Node.js有增量内存使用?

我有一个超过100 KB的gameserver.js文件。 每次刷新浏览器后,我都会继续检查我的任务pipe理器,并且每次刷新都会继续看到我的node.exe内存使用率持续上升。 我在这里使用ws模块: https : //github.com/websockets/ws ,想通了,你知道吗, 我的代码中有很多内存泄漏。 所以要仔细检查和隔离问题,我创build了一个test.js文件,并放入默认的ws代码块: var WebSocketServer = require('ws').Server , wss = new WebSocketServer({ port: 9300 }); wss.on('connection', function connection(ws) { ws.on('message', function incoming(message) { console.log('received: %s', message); }); }); 并启动它: 现在,我检查node.exe的内存使用情况: 让我困惑的增量部分是: 如果我刷新我的浏览器,使连接到此端口9300 websocket服务器,然后回头看我的任务pipe理器..它显示: 现在是: 14,500 K 每刷新一次,它就会不断上升,所以理论上如果我保持清醒的话就会经过屋顶。 这是打算? 是否有可能在ws模块内存泄漏? 我所要求的全部原因是因为我想也许在几分钟内或者当用户closures浏览器时,它将会回落,但是不会。 而我想做这个testing的核心原因是因为我想我在个人代码的某个地方有一个内存泄漏问题,只是想检查它是不是我,反之亦然。 现在我很难过

使用nodejs客户端访问golang websocket服务器

我是NodeJS的新手。 假设我有一个使用Golang的websocket包实现的echo服务器: 包主要 import( “code.google.com/p/go.net/websocket” “日志” “networking/ HTTP” ) func EchoServer(ws * websocket.Conn){ var msgstring websocket.Message.Receive(ws,&msg) log.Printf(“Message Got:%s \ n”,msg) websocket.Message.Send(ws,msg) } func main(){ http.Handle(“/ echo”,websocket.Handler(EchoServer)) err:= http.ListenAndServe(“:8082”,nil) 如果err!= nil { 恐慌(err.Error()) } } nodejs客户端代码应该是什么样的?

(“消息”)处理程序上定义Socket.io的最有效的方法

Socket.io的例子都遵循这种模式 io.sockets.on("connection", function(mySocket){ mySocket.on("my message", function(myData){ … }); }); 在我看来,这将为每个连接创build一个新的callback函数。 假设每个套接字都以相同的方式对消息做出响应,那么为所有的套接字定义一次处理程序就没有更高的内存效率了: function myMessageHandler(data){ … } io.sockets.on("connection", function(mySocket){ mySocket.on("my message", myMessageHandler); }); 甚至这个: io.sockets.on("my message", function(mySocket, myData){ … }); 如果是这样,为什么Socket.io会推荐一种浪费内存的做法? 我们期望在“连接”callback的闭包中保持套接字的有状态variables吗?

从audio元素获取audio样本

我想要使​​用networking浏览器从麦克风获取实时audio,并通过websockets将其发送到Node.js服务器。 我使用BinaryJS库发送二进制数据到服务器。 我在从麦克风获取audio样本时遇到问题。 这是我有什么: window.AudioContext = window.AudioContext || window.webkitAudioContext; var context = new AudioContext(); var audio = document.querySelector('audio'); navigator.webkitGetUserMedia({audio: true}, function(micstream){ audio.src = window.URL.createObjectURL(micstream); }, errorCallback); }); var errorCallback = function(e){ console.log("Rejected!", e); }; 我想要一些方法来获取每10ms左右的audio采样,以便我可以将它写入websocketstream。 我正在寻找这样的东西: function getSample(){ //read the current data in byte buffer. setTimeout(getSample, 10); } 有人能告诉我如何做到这一点? 还是有另一种方法来做到这一点? 谢谢!

如何使用用户密码和开发人员密码validationsocket.io websockets

我需要使用客户端的用户名,密码和开发人员密码(开发人员密码用于确保服务仅由注册开发人员开发的应用程序使用)validationsocket.io客户端连接。 问题是,开发人员密码不应该被应用程序的用户或客户端看到。 有没有一种方法来validation用户的客户端用户名,密码和另外的开发人员密码,而不需要客户知道开发人员的密码? 任何帮助是极大的赞赏。 谢谢。

使用Django-websocket时出错

我正在开发一个使用Django的RESTful Web服务。 在某些情况下,我们需要将服务器对象推送到连接的客户端,而无需客户端轮询。 我们决定使用django-websocket 0.3.0。 我正在编写testing用例,并尝试使用nodejs ws客户端模块连接到服务器 我在Django中的视图function如下: from django.http import HttpResponse from django_websocket import accept_websocket, require_websocket from django.views.decorators.csrf import csrf_exempt import json, sys, os, time, datetime @csrf_exempt @accept_websocket def home(request) : if not request.is_websocket(): return HttpResponse('new message') else: for message in request.websocket: message = modify_message(message) request.websocket.send(message) request.websocket.close() 我在js中的客户端代码是这样的: – //Normal Get var request = […]

如何testingnode.js websocket服务器?

我正在使用标准configuration的sockjs。 var ws = sockjs.createServer(); ws.on('connection', function(conn) { conn.on('data', function(message) { wsParser.parse(conn, message) }); conn.on('close', function() { }); }); var server = http.createServer(app); ws.installHandlers(server, {prefix:'/ws'}); server.listen(config.server.port, config.server.host); wsParser.parse函数是这样工作的: function(conn, message) { (…) switch(message.action) { case "titleAutocomplete": titleAutocomplete(conn, message.data); break; (…) // a lot more of these } 交换机中调用的每个方法都会向客户端发回消息。 var titleAutocomplete = function(conn, data) { redis.hgetall("titles:"+data.query, […]

WebSocketclosures发送

所以我看到了这个伟大的博客文章, 试用Node.js。 我决定尝试用作者的要点自行设置它。 它没有工作。 进一步的debugging表明,websocket连接正常,但是一旦“send”被调用就closures。 这是wireshark踪迹(原谅奇怪的间距): GET /test HTTP/1.1 Host: 127.0.0.1:8000 Sec-WebSocket-Key2: 3 j 92 9 62" 7 0 8 8 Upgrade: WebSocket Connection: Upgrade Origin: http://127.0.0.1:3000 Sec-WebSocket-Key1: 96'5% S72.93?06 ……(bHTTP/1.1 101 WebSocket Protocol Handshake Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Origin: http://127.0.0.1:3000 Sec-WebSocket-Location: ws://127.0.0.1:8000/test .4.R….mh…..{.{"action":"move","x":450,"y":22,"w":1146,"h":551}. 我已经在Chrome和Firefox 4.0testing版中尝试了这一点。 他们都performance出相同的行为。 如果我去原始的博客网站 ,它工作正常。 另一件事。 如果我在FF或Chrome中进入JS控制台,并执行以下操作: ws = new WebSocket('ws://localhost:8000/test') […]

我将如何去在node.js中唯一标识一台计算机?

简单的问题,我是使用node.js的新手,对于如何唯一标识计算机感到好奇。