Tag: websocket

开始了解networking套接字和http请求(和STOMP)

我最近join了一个新的项目,我负责使用networking套接字来实现stream数据。 这个想法是目前通过HTTP请求(以RESTful的方式)暴露的信息,他们希望通过networking套接字暴露。 在过去的48个小时里,我做了一些关于networking套接字和STOMP的研究,并希望得到以下几点的解释: 因此,对于客户端和服务器通过Web套接字而不是通过HTTP请求/响应进行连接,他们首先需要同意在它们之间build立一个Web套接字连接。 这是通过HTTP GET完成一个唯一的标头传递,说他们要使用一个Web套接字连接,而不是? 理论上说,有一大堆不同的数据通过一些API暴露给浏览器。 想象一下,有很多不同的HTTP请求可以做成GET,POST,DELETE。 所以要把所有这些信息的某些部分通过一个web套接字进行stream式传输,是简单地改变每个资源的当前GET请求来检查这个特殊的websocket头部是否在那里,然后做一些事情? 或者还有其他的东西需要通过networking套接字来暴露某些数据。 如果你从HTTP请求初始化套接字,我可能会误解HTTP和套接字的关系。 我认为这是我的两个主要问题,我相信这些答案将会指引我继续学习更多关于这个主题的正确方向。 我正在试图find任何好的示例代码示例,但我正试图理解这一点,足以在一周内实现。

使用Heroku构build可扩展分析后端的最佳方法是什么?

我需要构build一个简单的分析后端来捕获用户行为。 这将通过网页上的Javascript代码段捕获,就像Google Analytics或Mixpanel数据一样。 系统需要捕捉接近实时的浏览器数据(页面滚动位置,鼠标位置等),每隔5秒logging一次用户页面的状态。 每次测量只有三个属性,但必须经常进行。 数据不一定需要每5秒发送一次,但可能会频繁出现,但是当用户在页面上时,我必须获取所有数据。 也就是说,我不能每分钟上一次,而在119秒后离开的人丢失最后59秒的数据。 如果可能的话,我想build立一个系统,在可预见的未来可扩展,这意味着它为10,000个站点工作,每个站点有100个并发访问者,即每10万个并发用户每5秒发送一个事件。 我不担心查询数据,可以使用单独的系统来完成。 我最关心如何处理数据本身的捕获。 要求 根据上面的预算,系统需要处理来自100,000个用户池的每秒20,000个事件。 我想在Heroku上托pipe这个服务,但是在使用Rails做了很多工作的时候,我对高吞吐量系统是完全陌生的(除了知道你不使用Rails来处理它们)。 问题 有没有一个商业系统可以做到这一点(像Pusher,但数据采集以及分配)? 我应该使用HTTP请求还是使用websockets? node.js是正确的select吗? 如果我select一个基于套接字的解决scheme,那么每个networking服务器上Heroku上的testing套件可以处理多less个套接字 在Mongo / Reddis等之间进行存储的select有什么相关的考虑 这种问题实际上需要两个解决scheme – 第一个让您快速而低成本地达到合理的规模,第二个以更低的增量成本超越这个规模,但需要更多的开发工作?

如何设置NodeJS的einaros / ws模块接受wss(安全的ws)连接?

我正在使用NodeJS的eniaros / ws模块在iOS应用程序和使用web套接字的NodeJS服务器之间进行实时通信。 该应用程序运行良好,但现在我必须使用wss保护服务器和iOS应用程序之间的通信。 我有我的Rapid SSL证书和密钥,我在服务器上使用以下代码: var fs = require('fs'); var cfg = { ssl: true, port: 8081, ssl_key: 'key.key', ssl_cert: 'cert.crt' }; var httpServ = ( cfg.ssl ) ? require('https') : require('http'); var app = null; // dummy request processing var processRequest = function( req, res ) { res.writeHead(200); res.end("All glory to WebSockets!\n"); }; […]

socket.io/node.js检测服务器是否closures

有什么我可以做在客户端检测到socket.io websocket不可用? 有些东西是: 服务器按照惯例启动 客户连接 消息在服务器和客户端之间来回发送 服务器closures (不再可用) 警告连接的客户端服务器不可用 我试图在客户端添加'错误'和'connect_failed'选项,但没有任何运气,那些根本没有触发。 任何人的想法,我怎么能做到这一点?

讨论:通过node.js聊天服务器:HTTP还是TCP?

我正在考虑使用node.js / socket.io做一个聊天服务器。 我应该使它成为一个TCP服务器或HTTP服务器? 我想tcp服务器会更有效率,但你可以发送其他东西,如文件附件等? 如果tcp更高效,还有多less呢? 另外,只是想知道一个node.js服务器可以处理多less个并发连接? 是更多的工作做TCP或HTTP?

是否有可能启用tcp,http和websocket都使用相同的端口?

我想在同一个端口上启用tcp , http和websocket.io通信。 我开始使用tcp服务器(部分上面////线),它的工作。 然后我运行了websocket.io (下面的////行)部分find的echo服务器的例子 ,它也工作。 但是,当我尝试将它们合并在一起,tcp不再工作。 那么,是否可以启用tcp,http和websockets都使用相同的端口? 或者我必须在另一个端口上侦听TCP连接? var net = require('net'); var http = require('http'); var wsio = require('websocket.io'); var conn = []; var server = net.createServer(function(client) {//'connection' listener var info = { remote : client.remoteAddress + ':' + client.remotePort }; var i = conn.push(info) – 1; console.log('[conn] ' + conn[i].remote); client.on('end', […]

Express和WebSocket在同一端口上侦听

我有一个app.js这是用来触发两个事件时收到一些POST数据: 将POST数据插入到数据库中 使用WebSocket向客户端发送消息 这里是app.js (只有重要的行) var express = require('express'); var bodyParser = require('body-parser'); var server = require('./server'); var app = express(); var port = process.env.PORT || 3000; app.post('/server', server); app.listen(port, function(){ console.log('Slack bot listening'); }); 这里是server.js (只有重要的行) var db = require('./DB'); var WebSocketServer = require('ws').Server; var insertData = function(req, res){ var wss = new WebSocketServer({server: […]

使用Websockets和Nodejs上传文件

我试图实现一个file upload器,其中一个HTMLinput文件由WebSocket发送到Nodejs服务器。 试图从HTML的FileReader API中读取BLOB和二进制string中的文件,并将其发送到Nodejs服务器,以便将其写入服务器中的文件。 在Nodejs部分尝试了使用ascii或base 64编码的createWriteStream和writeFile。 仍保存在服务器上的文件无法正常工作。 我错过了什么吗? 谢谢 UPDATE 客户 var uploader = $("#uploader"), files = uploader.prop('files'), file_reader = new FileReader(); file_reader.onload = function(evt) { socketClient.write({ 'action': 'ExtensionSettings->upload', 'domain': structureUser.domain, 'v_id': ext, 'file': file_reader.result }); }; file_reader.readAsDataURL(files[0]); //readAsDataURL uploader.replaceWith(uploader.clone()); 服务器 var stream = fs.createWriteStream("file"); stream.once("open", function() { stream.write(msg.file, "base64"); stream.on('finish', function() { stream.close(); }); […]

使用与websocket(或socket.io)ngrok

有没有简单的示例代码显示ngrok转发socket.io/websocket(在本地主机上的nodejs下运行)? 换句话说呢 ngrok http 3000 使用在端口3000上运行的nodejs服务器和socket.io? 或者类似的东西 ngrok http+tcp 3000 (just wild guessing) 编辑: 在ngrok.com的帮助下回答我自己的问题 简单地使用 ngrok http 3000 您将看到localhost绑定的urlstring。 所以在客户端JavaScript代码中,改变 var socket = io.connect('http://localhost:3000'); 至 var socket = io.connect('http://94349fe6.ngrok.io'); 注意: http://94349fe6.ngrok.io就是这个urlstring。 你的将不同于这个。 再次编辑: 实际上,如果只是简单地做: var socket = io(); “它默认尝试连接到服务页面的主机” 所以它也可以工作。

如何debuggingNode + Socket.io CPU问题

我们使用Express 3运行Node Socket.io服务器。使用Forever监视服务器。 该服务运行良好,但CPU一直在增长,直到达到90%以上,然后突然下降到20%左右,如下图所示。 我相信,永远是重新启动应用程序所造成的下降。 我想知道的是 什么是可能导致Node.js应用程序行为的典型因素? 什么工具/方法可用于debugging节点应用程序中的内存泄漏/ CPU占用? 我认为这可能与Socket.io在用户断开连接时没有清理资源有关,尽pipe文档说Socket.io会自动pipe理这个。 任何帮助将不胜感激,这个问题是使我们的服务器pipe理非常困难。 我已经在一个星期前在Serverfault上发布了这个问题,但是没有收到回复,所以我觉得在这里可能会更好。 更新:经过更多的研究,看起来CPU并不直接与连接数相关。 我们的临界质量似乎大约是1500个并发连接,如下所示: xhr-polling:767 websocket:692 jsonppolling:80 有时我们可能只有500个连接,而其他时间只有1500个连接。 我知道发送邮件的速度有很大的影响,但速度是相当一致的。