Articles of websocket

使用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的新手,对于如何唯一标识计算机感到好奇。

我怎样才能有效地加载testing与无头浏览器的Web应用程序?

我有几个无头浏览器的经验,但只用于testing和不加载testing。 什么是启动500-1000 websocket客户端加载testing应用程序的最佳方法? 这是简单的只是循环一堆setTimeout增加得更久? 我可以自己build立实际的testing,我只是好奇哪个框架最适合这个。 我有ZombieJS和PhantomJS(以及Casper和Webspecter)的经验。

node.js:代理websockets到其他端口

我在运行在端口80上的node.js中编写了http代理。我所需要的只是将socket.iostream量redirect到端口9090,并将标准httpstream量redirect到8080上的Apache。这是我的代理代码: httpProxy = require('http-proxy'); httpProxy.createServer(function (req, res, proxy) { if (req.url.match(/socket.io/)) { proxy.proxyRequest(req, res, { host: 'localhost', port: 9090 }); } else { proxy.proxyRequest(req, res, { host: 'localhost', port: 8080 }); } }).listen(80); 一切正常,但io.socket回落到xhr-polling。 http://localhost/client.htm – falls back to xhr-polling file:///C:/…/client9090.htm – still uses websocket socket.io应用程序在端口9090上运行,client.htm连接到80,而client9090.htm直接连接到9090。 它看起来像一个节点HTTP代理使socket.io应用程序在xhr轮询模式下工作。 客户端是Chrome v.25 socket.io应用程序代码 var io = require('socket.io').listen(9090); io.on('connection', […]