Tag: websocket

socket.io是否仅向用户广播?

请检查下面的服务器端代码。 假设在某个瞬间data.id为abc77,那么无论是否引发了socket.io事件,每个连接的浏览器都会收到套接字消息“my_model / abc77:update”,还是只接收到订阅此特定消息的套接字消息,不? 为了澄清,使用一个实际的应用程序:即使他的应用程序的实例没有订阅,黑客能够使用浏览器的开发者控制台接收消息“my_model / abc77:update”,不知道data.id是abc77? var io = require('socket.io'); io.listen ( server ).sockets.on ( 'connection', function ( socket ) { socket.on('my_model:update', function(data, callback) { database.save(data, function(err){ if (!err) { callback(data); socket.broadcast.emit('my_model/'+data.id+':update'); } }); }); });

技术可以最大限度地减less实时连接的延迟

我想从汽车传输一些遥测数据到一个networking应用程序。 硬件已经被照顾了。 它会通过Android设备每100ms发送一次数据。 我想知道什么有较低的延迟,websockets(socket.io)或webrtc(Datachannel)? 谢谢

在AWS节点上,socketcluster无法连接超过1000个连接

我正在运行一个简单的socketcluster node.js服务器并从node.js websocket客户端连接到它。 通过在本地Ubuntu14.04上运行服务器,我可以连接超过10,000个客户端到服务器。 但在AWS EC2(c3-large)ubuntu14.04实例上,相同的代码仅连接less于1000个连接。 修改了etc / security / limits.conf,并在EC2实例上将“soft nofile”和“hard nofile”的限制设置为65535。 Posix的软限制build议Node.js超过1000个并发连接不起作用。 其他的sysctl参数在我的本地ubuntu和EC2实例之间差别不大。 延迟可能不是问题,因为我尝试从多台客户机连接到服务器,但连接数仍然<1000。 是否有任何可能影响性能的AWS环境variables? 来自和来自EC2的消息数量可能是一个限制? var posix = require('posix'); posix.setrlimit('nofile', {soft:10000}); var SocketCluster = require('socketcluster').SocketCluster; var numCPUs = require('os').cpus().length; var numWorkers = numCPUs; var start = Date.now(); console.log("….. Starting Server…."); process.on('uncaughtException', function (err) { console.log("***** SEVERE ERROR OCCURED!!! *****"); console.log(err); }); var […]

获取由套接字侦听的事件

我在套接字上听很多事件。 但是当事件被触发时,处理函数不会被调用。 我想检查哪些事件被套接字监听。 var socketClient = require('socket.io-client'); var socket = socketClient.connect("server_address_here"); socket.on('event1', function (data) { }); socket.on('event2', function (data) { }); 有没有可用的function或属性?

OpenShift上的WebSockets不能用于远程客户端

我有一个我无法解决的问题。 我使用socket.io或WebSockets节点js库在openshift盒式磁带上实现了节点js WebSockets服务器。 他们中的任何一个的结果是一样的。 使用在同一个openshift平台上运行的节点js客户端,一切正常。 当客户端在我的本地PC上移动客户端连接,并突然断开给1011内部服务器错误。 我尝试使用其他众所周知的客户,如WebSockets.Org或jsfiddle上的回声服务,但结果是相同的,连接和突然断开连接。 不知道为什么。 有人能够从远程连接到openshift WebSockets服务器吗? 该服务器是最小和简单,并在本地工作正常。 这是我用作服务器的代码: var ipaddress = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1"; var port = 8000; var app = require("express"); var server = require("http").Server(app); var io = require("socket.io")(server); var handleClient = function (socket) { // we've got a client connection socket.sendUTF("hello"); console.log("connect"); }; io.on("connection", handleClient); server.listen(port, ipaddress); 这是套接字端点:ws://js-camillorh.rhcloud.com:8000 谢谢! […]

使用Web套接字的基于XMPP的聊天服务体系结构

假设我想创build一个基于Web和Web的基于套接字的聊天服务。 而且我们还要说,我想要多个离散的聊天室。 我需要这个扩展,所以,我想使用XMPP,以便我可以透明地使用多个服务器。 图中显示的架构是我需要的吗? 而且,我甚至需要NodeJS?

socket.io websocket连接无效(最新的chrome)

在安装node.js之后,我按照这个教程启动了一个简单的聊天服务器。 这是很容易安装和工作,但我已经注意到两个问题: 1.)我从socket.io得到这个警告 info – socket.io started debug – served static /socket.io.js debug – client authorized info – handshake authorized 1385647068766475337 debug – setting request GET /socket.io/1/websocket/1385647068766475337 debug – set heartbeat interval for client 1385647068766475337 warn – websocket connection invalid 这对我来说没有意义,因为我没有碰到任何socket.io,我正在使用最新的chrome版本(23),我知道它支持websockets(我可以用PHP-Websockets成功连接到它们)。 它继续使用XHR,但我真的很感兴趣的WebSocketfunction的工作。 2.)当我到本地主机:8080连接到聊天服务器,它需要大约7-8秒,它提示我的名字,并实际上连接到服务器。 我有一种感觉,这可能是因为它正在恢复到XHR,但我真的不太了解,所以我不能说。 有什么想法吗?

使用Socket.IO的emit()而不是所有的HTTP请求是一个好习惯吗?

我build立了一个Node.js HTTP服务器。 它侦听path“/”,并在获取请求上返回一个空的HTML模板。 该模板包含Require.js客户端脚本,该脚本创build与服务器的Socket.IO连接。 然后,客户端和服务器之间的所有通信都由Web Sockets提供。 连接时,服务器需要authentication; 如果存在authenticationcookie,则客户端将其发送到服务器进行validation,如果没有cookie,则客户端呈现login视图并等待用户input等。 到目前为止,一切正常,validation凭据后,我为用户创build一个SID,并使用它来pipe理他的访问权限。 然后我渲染主视图和应用程序启动。 问题: 是否需要使用HTTPS而不是HTTP,因为我只使用HTTP将脚本发送到客户端? (注:我打算使用本地存储而不是Cookie) 在没有HTTP的情况下使用纯Web套接字是否有什么问题? 如果有效,为什么没有人使用它?

WebSocket不能发送/接收超过65536个字符的string

我遇到了奇怪的websocket问题: 服务器在node.js中: var websocket = require('websocket'); var http = require('http'); var transportServer = http.createServer(function(request, response) {}); var wsServer = new websocket.server({ httpServer: transportServer }); wsServer.on('request',function(request) { var connection = request.accept(null,request.origin); console.log('connected'); connection.on('message',function(message) { console.log('message received'); }); connection.on('close',function(){ console.error('connection closed'); process.exit(0); }); }); transportServer.listen(5000); 客户端浏览器: var ws = new ReconnectingWebSocket 'ws://localhost:5000' ws.onopen = function(){ var buf […]

testing客户端是否可以通过端口80,443,843连接到WebSockets

我在节点服务器上运行WebSockets应用程序。 一切正常,除了我的应用程序在学校使用,其中一些防火墙显然阻塞端口80上的WebSockets。我读了一些像843端口通常是畅通无阻的,但我想在做任何切换之前testing。 如何testing打开的WebSockets端口? 例如,从客户端尝试端口80,443和843,并报告哪些工作? 任何教程或代码片断将是伟大的…