Articles of websocket

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 […]

iOS – 使用Websockets进行自动完成

我正在构build一个iOS应用程序,允许用户在大型数据库中search书籍。 我们希望实现一个“自动完成”function,在用户input时从服务器检索标题,以在表格视图中提供build议(我们的后端使用排名algorithm来获取相关结果)。 我们正在使用Starscream框架来实现Websockets,但是我想获得一些关于实现此function的最佳方式的build议。 到目前为止,我已经提出了两个select: 用户启动应用程序时打开Websocket连接,并在整个会话中保持此连接。 networking连接的变化将导致pipe道被破坏,所以需要使用客户端ping来检测这个并build立一个新的连接。 当用户点击search栏开始input时,打开Websocket连接。 只有在search栏处于活动状态(键盘存在时)时,连接才会保持打开状态,并且在键盘被解除时断开连接。 有一件事要记住,应用程序有多个视图和function,不涉及search,实际上需要自己的连接(例如,消息function当前使用自己的WebSocket连接发送/接收来自其他用户的消息,其他视图从REST API下载内容)。 所以这引出了另一个问题: 从同一个应用程序同时维护多个WebSocket连接是否有缺点? 另外,有哪些好的做法可以用来确保连接通过networking转换(即从WiFi到蜂窝)保持活跃? 这个问题我有很多问题,特别是在消息服务方面。 任何build议/这个话题的帮助将不胜感激。 作为参考,我们的服务器使用Node.js和Websockets的ws框架。

websocket客户端到socket.io

我需要一个服务器能够接受来自websocket和socket.io客户端的连接,这是可能的吗? 当我运行的只是socket.io,也socket.io客户端工作正常,但标准的WebSocket客户端无法连接。 另一方面,当我与socket.io一起运行websocket服务器,websocket崇拜,但在浏览器,这是试图通过socket.io连接,我看到错误WebSocket connection to … failed: Invalid frame header 。 是否有可能使两个连接在单个服务器实例上工作? 我正在使用express.io和websocket节点 ,这将是很好的让它只与express.oi工作。

sails.io.js – 从“Resourceful PubSub”断开连接

我正在构build一个单页的Web应用程序,在后端使用sails.js ,并通过socket.io.js套接字io包装来连接。 我有一个小帮手类让我订阅我的模型: subscribe(model, next) { io.socket.get('/' + model, function serverResponded (body, JWR) { if (JWR.statusCode == 200) { next(null, body, JWR.headers); } next('The socket server responded with a bad status code ' + (JWR.statusCode), null, JWR.headers); }); } 所以这个工程(我想,不知道如何得到更新推送给我,但是,),但是,当用户更改我的Web应用程序中的页面,我应该如何断开这个“订阅”,并保持连接,因为它的单个页面? 我看到io.socket.disconnect()但不知道如何适应它。

如何从websocket连接保存来自客户端的传入文本文件

我试图在node.js中实现一个websocket服务器,而不使用任何框架。 从客户端发送消息到服务器工作正常。 但是现在我试图从客户端发送一个文本文件到服务器。 我可以通过在terminal中使用console.log来查看服务器端的内容。 但: 我如何获得文件信息? (姓名,创build/编辑date等?) 我怎样才能保存文件? 客户代码: (function () { 'use strict'; var output, ws; //Display logging information in the document function log(s) { var p = document.createElement("p"); p.style.wordWrap = "break-word"; p.textContent = s; output.appendChild(p); //Also log information on the javascript console window.console.log(s); } //Send a message on the Websocket function sendMessage(msg) { […]

无法从本地计算机上的socket.io-client连接到Azure Web App上的socket.io

我正在尝试获取作为Azure Web App托pipe的socket.io服务器与本地计算机上的socket.io-client进行通信。 我testing了我的本地networking上的两台计算机之间的代码,它工作正常…客户端发送消息到服务器和服务器响应与确定。 但是,当我使用连续部署加载服务器文件并尝试连接它时,客户端无法连接,我无法获得有关正在进行的任何反馈。 io.on('error, function(){};甚至不会触发。 这里是客户端的代码(我刚刚修改了IP地址): var socket = require('socket.io-client')('http://160.23.1.5:3100'); var readline = require('readline'), rl = readline.createInterface(process.stdin, process.stdout); socket.on('connect', function(){ console.log('Connected to Server!'); }); socket.on('error', function(){ console.log('Erorr connecting to server'); }); socket.on('DATA', function (data) { console.log(data); /// **** Code for entering client input }); rl.setPrompt('Server says> : '); rl.prompt(); rl.on('line', function(line){ socket.emit('RANDOM', {value: […]

Websocket + SSL(WSS)客户端在C ++中的实现

我想在c ++中实现安全的websocket连接(WSS)。 我不想使用任何外部库。 我有正常工作(ws)连接的代码。 我也想添加对HTTPS的支持。 任何机构都可以告诉我如何继续下去。 例如:对于正常的ws连接: GET / foo HTTP / 1.1 主机:example.server.com 升级:websocket 连接:保持活着,升级 Sec-WebSocket-Key:dfGsdNhbXBsZSBub25REQ == Sec-WebSocket-Version:13。 我已经正在发送这些types的请求,创build正常的套接字和连接到服务器后的代码。 以同样的方式我也想做WSS。 请告诉我如何做到这一点。 谢谢, VVK。

在socket io中停止接收事件一段时间

我在我的套接字客户端同时充斥着许多事件。 假设有任何两个事件eventA and eventB ,其中eventB仅在eventA发生eventB被使用。 所以到那时我想忽略那个事件。 如何在nodejs中使用socket.io来实现这个场景?

为什么我在Node的HTTP服务器上有这么多连接事件?

我有一个使用socket.io的Web应用程序。 它在本地机器上运行localhost:8000。 为了在我的应用程序中find令人讨厌的资源泄漏,我尝试在我的HTTP服务器上注销连接事件: server.on('connection', function(conn) { //log out connection details }); 在页面加载后,当我在浏览器中打开页面时,可以在日志中看到多个连接事件 – 如下所示: connection established: 127.0.0.1:54148 connection established: 127.0.0.1:54149 connection established: 127.0.0.1:54146 connection established: 127.0.0.1:54152 connection established: 127.0.0.1:54144 connection established: 127.0.0.1:54155 奇怪的是,我没有创build一个WebSocket连接后,页面加载 – 只有当用户点击一个button。 但是我没有点击任何button,我仍然看到这些奇怪的联系。 如果我点击我的button来连接到我的服务器socket.io日志显示一个新的连接: connection established: 127.0.0.1:54155 幸运的是,我在日志中看到的每个连接都在一段时间后closures – 所以我猜这不能成为我资源泄露的原因。 但我仍然好奇:是什么原因导致这些连接事件? 为什么端口号这么奇怪(不是我的服务器监听的8000)? 编辑: 我的服务器configuration不是一个特殊的。 在server.js : var express = require('express'); var app […]