Tag: websocket

Socket.io 1.0.6,nodejs CPU超过100%

我正在创build一个Web服务器来pipe理对活动数据的订阅。 这些数据通过TCPstream式传输到nodejs,然后stream式传输到使用Socket.io通过websockets订阅特定主题的客户端。 这是工作stream程。 客户端发送特定主题的订阅请求。 Nodejs应用程序将代理这个订阅到Java应用程序,然后开始通过TCP将数据推送到nodejs。 Java应用程序为每个可以侦听的新闻types启动9个不同的套接字连接,每个套接字一个类别 值得一提的是,这个数据可能是非常巨大的,因为当客户端订阅他们第一次获得历史数据(高达45MB),并且每个后续的推送包含一个小的增量。 我所遇到的问题是在初始推送nodejs应用程序中使用了超过100%的CPU。 起初,我认为这个问题是parsing正在发送给我的数据。 经过几天的debugging,我发现当注释掉socket.emit(data.topic, data) CPU会下降到1%-3%。 这使我相信,我遇到的问题是与socket.io。 我在这里误用socket.io吗? 有什么替代scheme可以推动不同的主题/渠道? 我的代码有什么问题吗? 感谢您的时间! //needed for REST subscribe services var app = require('express')() //needed for HTTP server , server = require('http').createServer(app) //WebSocket library (TODO see how to implement this) //, sockjs = require('sockjs') //backend subscriptions , subUtil = require('./subscriptions/subscriptionManager') , bodyParser = […]

Windows 8应用程序和nodejs websocket不能相互连接

我正在使用Windows应用程序,并尝试将其连接到节点服务器。 我在Windows应用程序中使用Web套接字,而从npm节点使用“websocket”。 我有麻烦连接两个似乎在那里连接,但当我试图发送信息(简单的Hello Worldstring)没有任何反应。 我有一个简单的JavaScript的Windows应用程序。 在我的default.html中只有一个简单的button: <button onclick="Check()">Check status</button> 在default.js我有检查function是: function Check() { var host = "ws://192.168.201.91:8080"; try { socket = new WebSocket(host); socket.onopen = function (openEvent) { console.log("Sockets open"); socket.send("Hello, world"); console.log("Socket state: " + socket.readyState); console.log("Message is sent to: " + socket.url); }; socket.onerror = function (errorEvent) { console.log(" 'WebSocket Status:: Error was […]

NodeJS + Websockets + HTML5video标签和“stream媒体”

我正尝试使用websockets将大型video文件stream式传输到浏览器的<video>标签中。 video播放良好,但是在播放之前一直等待下载整个video,导致很大的延迟。 设置autoplay = true和preload="none"似乎对此没有影响。 所以我已经研究过把video分块,然后把它作为一个blob的URL发送到浏览器。 对于块,我正在使用节点分块stream 我的代码到目前为止: var chunkingStreams = require('chunking-streams'); var SizeChunker = chunkingStreams.Chunker; var input = fs.createReadStream('src-videos/redcliff450.webm'), chunker = new SizeChunker({ chunkSize: 2000000 }), output; chunker.on('chunkStart', function(id, done) { output = fs.createWriteStream('src-videos/output/' + id + '.webm'); done(); }); chunker.on('chunkEnd', function(id, done) { output.end(); done(); }); chunker.on('data', function(chunk) { output.write(chunk.data); }); input.pipe(chunker); //test […]

通过设置encryption的Nodejs WebSocket服务器的问题

我试图让一个nodejs wss服务器启动并运行。 为此,我使用Express4框架和eniaros / ws模块。 但遗憾的是,我无法启动并运行WSS-Server。 正常的WS-Server工作正常,但每次尝试连接到我的WSS时,客户端都会连接并直接断开连接。 我的证书是自签名的。 我的代码如下所示。 如果有人能帮助我,这将是非常棒的! var express = require('express'); var router = express.Router(); var app = express(); var http = require('http'); var https = require('https'); var WebSocket = require('ws').Server; var path = require('path'); var fs = require('fs'); // Routes app.use('/', require('./routes/index')); // Load config files var db_conf = require('./config/vops_db_config.json'); var […]

带有ssl和Access-Control-Header的socket.io / node.js

我设置了一个节点服务器,并在激活ssl(官方,非自行分配的证书)时收到错误消息。 错误消息: XMLHttpRequest cannot load https://servername:8081/socket.io/… No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://servername' is therefore not allowed access. results:1 但实际上,我在.htaccess文件中包含了以下代码: <IfModule mod_headers.c> Header set Access-Control-Allow-Origin * Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT" </IfModule> apache标题模块被安装。 我的服务器: var fs = require('fs'); var https = require('https'); var express = require ('express'); var options = { key: […]

如何让先进的rest客户端使用socket.io

我正在尝试使用高级rest客户端(一个Chrome扩展/应用程序)与socket.io,但它不连接到我的NodeJS socket.io服务器。 问题可能是我不能使用ws:// localhost,必须先使用另一个协议? 不过,我知道socket.io支持WebSocket协议。 或者也许有专门为socket.io ..的另一个扩展或应用程序? 任何帮助是极大的赞赏。

如何为Node.js WebSocket服务器configurationAWS Elastic Beanstalk?

我正在写一个纯粹的Node.js WebSocket服务器: AWS Elastic Beanstalk 适用于PostgreSQL的AWS关系数据库服务(RDS) 适用于Apple推送通知服务(APN)的AWS简易通知服务(SNS) Node.js ws模块 Node.js pg模块 我也希望它是安全的,例如: WSS(基于SSL / TLS的WebSockets) DoS攻击预防 我已经将“代理服务器”更改为“无”,但我应该更改哪些其他configuration?

使用socket.io时分配大小溢出

我正在开发一个与Node.js的Web应用程序,我使用它的socket.io。 我有问题,有时socket.io似乎没有工作。 当我查看浏览器控制台时,看到一个“分配大小溢出”错误消息,指向这段代码: var msgLength = ''; for (var i = 1; ; i++) { if (tailArray[i] == 255) break; msgLength += tailArray[i]; // this is the line which causes the error } 如果有人想看更多的代码,我会说这些是节点的socket.io模块,版本1.0.2的socket.io.js(显然,客户端文件)的行3725-3729。 看来上面的函数产生一个太长的string。 然而,我一直在调查一个string的最大长度,我发现这个问题,这清楚地表明没有string长度的限制。 经过深入调查,我发现并重现了一个导致浏览器出现“分配大小溢出”错误警告的例子。 代码如下: var a = 'a'; for (var i = 0; i < 100; i++) { a += a; […]

socket.io 0.9发现错误

我正在使用Flash客户端和socket.io 0.9服务器构build一个手机游戏。 我的游戏很受欢迎,随时都有〜300个连接的客户端。 当服务器工作24小时时,突然它只在约10%的情况下才开始响应。 我debugging的Flash客户端和socket.io库尝试加载为HTTP这个url: http://host.com:123/socket.io/1/?time=14187588 … 通常情况下,它会收到状态码200,如下所示: Io70X_FFWJFdyCpfp_3w:40:60:websocket,htmlfile,xhr-polling,jsonp-polling,flashsocket 但是当服务器挂起时 – 在90%的请求中它接收到响应码0和没有数据,而另外10%的情况下接收到正确的数据并成功连接。 有任何想法吗?

拦截(并可能拒绝)networking套接字升级请求

我有一个Node.js服务器,我正在发送一个Web套接字升级请求。 此请求的授权标头包含login信息,我需要与数据库条目进行比较。 我不确定如何停止打开Web套接字连接,直到我的数据库查询callback被执行。 以下是我目前正在做的简化: var Express = require('express') var app = Express() server = app.listen(app.get("port"), function () {}) server.on("upgrade", function (request, socket) { //Query database //On success set "authenticated" flag on request (later accessed through socket.upgradeReq) //On failure abort connection }) 这个工作,但是有一个短暂的时间sockets打开,但我没有validation授权标题,所以恶意用户可能会发送/接收数据。 我通过使用“authentication”标志来减轻这种风险,但似乎必须有更好的方法。 我尝试了以下的东西,但他们似乎拦截除升级之外的所有请求: Attempt #1: app.use(function (request, response, next) { //Query database, only call […]