Articles of socket.io

如何解决在sails.js的SocketIO握手过程中没有可用的有效会话?

我正在使用sails.js开发一个iOS应用程序的API,并使用websockets进行实时通信。 问题是,我不能让套接字握手工作。 控制台中显示“此套接字中没有可用的有效会话”错误。 当我谷歌search了一下,我才知道我需要设置一个有效的cookie。 由于我的客户端不是基于浏览器的Javascript,我不能设置任何cookie。 我甚至在config/sockets.js设置了authorization: false 有没有解决这个问题? 还是selectSails JS这个任务是一个错误? 顺便说一句,这些是我遇到这个问题的一些链接: https://github.com/balderdashy/sails/issues/1062 https://github.com/balderdashy/sails/issues/995 https://github.com/balderdashy/sails/issues/1003

连接android客户端到sails.js

我正在使用nkzawa socket.io Android客户端 。 我怎样才能连接到sails.js服务器? 我尝试从客户端(iOS和Android)的发送套接字请求到Sails.js服务器和简单的Sails.js和Android示例的方法,但我的帆服务器上出现以下错误: Running "watch" task Waiting… verbose: A socket is being allowed to connect, but the session could not be loaded. Will create an empty, one-time session to use for the life of the socket connection. Details: Error: Session could not be loaded at _createError (/usr/local/node-v0.12.4-linux-x64/lib/node_modules/sails/lib/hooks/session/index.js:271:21) at Immediate._onImmediate (/usr/local/node-v0.12.4-linux-x64/lib/node_modules/sails/lib/hooks/session/index.js:274:13) at processImmediate […]

从Socket.IO中删除端口并更改目录

在Ubuntu 15.04上使用Apache我试图从URL中有效地移除端口3000,并将path更改为http://example.com/{app}/socket.io… 使用ProxyPass和ProxyPassReverse我已经从URL中有效地移除了端口,并相应地更新服务器和客户端以更改path。 虚拟主机变化: ProxyPass /path/ http://example.com:3000/path/ ProxyPassReverse /path/ http://example.com:3000/path/ 我做的服务器端更改如下: var io = require('socket.io')(http, {path: '/path/socket.io' }); app.get('/path/', function(req, res){ 而我所做的客户更改如下: var socket = io({path: '/path/'}); 一切似乎运行顺利,直到我打开我的控制台日志,看到使用铬时, GET请求过多。 这肯定会杀死我的带宽,我想我设法不正确地听取了套接字,导致大量的GET请求。 有人可以提供一些指导,我可能会做错什么?

升级path从Sails.JS 0.10到0.11保持向下兼容性

我有一个传统的Sails.JS项目,目前在Sails版本0.10.5。 我想将项目升级到Sails 0.11.x及以后版本,但有一个问题。 这个项目作为本地移动应用程序的后端,因此与升级一个Web服务器不同,您只需将新的sails.io.js和socket.io客户端库链接到您的网站,我们就不能依赖用户升级原生应用程序。 我是唯一一个遇到这个问题似乎是不合理的,所以我想向社区提出一个问题,看看是否有什么辉煌的东西让我没有想到要使升级顺利进行。 我想到的想法是: 使用子域( https://v2.domain.com/api/ .. )运行两个版本的应用程序。 这显然是最明显的解决scheme,但需要相当数量的服务器configuration才能实现,而我们目前正在运行定制环境能力有限的PAAS,因此这可能需要交换机提供商。 除了参与这条路线的工作之外,还有关于如何处理代码库的决定。 您可以为两个风帆版本维护两个代码分支,但这意味着修复错误两次和两次错误的可能性。 或者你可以在代码中添加条款来检查它运行的是哪个版本的sails。 这些看起来都不是很干净,但我认为如果这两个选项中的其中一个select了第二个选项的话。 通过sails.js核心代码挖掘,并find一种方法来获得socket.io 0.9和socket.io 1.0并行运行。 这将允许我让所有用户在closures0.9支持之前更新他们的移动应用程序。 虽然这也有明显的陷阱,其中主要是在框架层面进行全面的变革。 我很想知道其他人在这种情况下做了些什么,如果解决scheme只是保持在Sails 0.10.5上,那很好,但是我很想得到原生Socket.IO库的额外好处,出来v.1.0,而不是我目前使用的半家庭纺解决scheme。 此外,继续获得安全性和function更新将是很好的。

socket.io不断尝试使用错误的地址轮询

嘿,我想用跨域的socket.io。 例如,假设域名是: https : //client.domain.com和https://server.domain.com 。 我的客户端代码如下所示: socket = io.connect("https://server.domain.com"); socket.on("connect", function () { console.log("socketio Connected to server!"); }); socket.emit("test", {"test":"test"}); 和服务器端: var fs = require('fs'); var https = require('https'); var express = require('express'); var socketIO = require('socket.io'); var app = express(); // Settings var serverOptions = { key: fs.readFileSync('privkey1.pem'), cert: fs.readFileSync('cert1.pem') }; var serverPort […]

内存泄漏使用socket.io

我发现,套接字io服务器端手动断开它们时,没有完全销毁。 我发现这个话题在github上很有用。 当我在寻找一些阻止GC清理套接字的variables链接时,我在这里提出一个问题。 如果这里有人遇到同样的问题,这将有很大的帮助。 该代码不起作用: socket.on('disconnect', function(){ socket.removeAllListeners(); }); ///………………. socket.disconnect(); 解决方法,但是,使用受限制的库字段: delete io.sockets[url]; io.j = [];

如何使用用户密码和开发人员密码validationsocket.io websockets

我需要使用客户端的用户名,密码和开发人员密码(开发人员密码用于确保服务仅由注册开发人员开发的应用程序使用)validationsocket.io客户端连接。 问题是,开发人员密码不应该被应用程序的用户或客户端看到。 有没有一种方法来validation用户的客户端用户名,密码和另外的开发人员密码,而不需要客户知道开发人员的密码? 任何帮助是极大的赞赏。 谢谢。

Reveal.js复用不起作用

我遵循以下链接的示例: https : //github.com/hakimel/reveal.js#multiplexing ,但不知何故多路复用不起作用 – 当主幻灯片更新时,客户端不会更新。 我已经尝试了这两个reveal.js演示socket.io服务器,并尝试托pipe我自己的。 这些选项都没有工作,我很确定我已经configuration他们的权利。 这是我的两个configuration代码: 主/ index.html中 Reveal.initialize({ controls: true, progress: true, history: true, center: true, multiplex: { id: 'e2bc6e79f19fbe63', secret: '13661966883862075064', url: 'revealjs.jit.su:80' }, dependencies: [ { src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.10/socket.io.min.js', async: true }, { src: 'plugin/multiplex/client.js', async: true }, { src: 'plugin/multiplex/master.js', async: true }, ] // { src: 'plugin/search/search.js', […]

使用Express.js v4和Socket.io v1进行会话

如何在express.js中保存会话数据并在socket.io事件中访问它? 我正在使用express.js v4 , socket.io v1和基本的快速会话中间件来开发web应用程序。 我花了几个小时试图解决这个问题,但堆栈溢出的所有当前答案只适用于expressionv3和socket.io v0.9。 不幸的是,我不能使用express.io,因为它只是一个使用这些旧版本的包装器。 我目前的解决scheme是彻底的黑客攻击 app.get('/auth', function(req, res) { if(verified(req.query)) { authed[req.sessionID] = true; } }); io.sockets.on('connection', function(websocket) { var cookies = cookie.parse(websocket.handshake.headers.cookie); var decrypted = cookieParser.signedCookies(cookies, random); var sessionID = decrypted['connect.sid']; websocket.on('input', function(input) { if(authed[sessionID]) { // Do stuff… } }); }); 我将基于会话ID的“会话数据”保存在对象中作为键/值存储区。 这对于单个进程应用程序来说工作得很好,但它确实不是一个好的解决scheme。 它实际上并没有给我访问保存在req.session中的任何东西,如果过程结束,我保存的所有数据都将丢失。 最重要的是,我需要加载第三方的cookie包来parsing来自socket.io的cookiestring。 似乎新版本的Cookieparsing器没有使用它的函数来parsingstring中的cookie。 至less,没有logging。 有一个更好的方法! […]

Websocket(node.js)连接限制,客户端在达到400-450个连接后断开连接

我有一个与socket.io连接限制大问题。 如果连接数量超过400-450个连接的客户端 (通过浏览器)用户断开连接。 我增加了软硬限制的tcp,但它并没有帮助我。 这个问题只适用于浏览器。 当我尝试通过其他node.js服务器的socket-io-client模块进行连接时,我达到了5000个连接的客户端 。 对我来说这是一个非常大的问题,完全阻止了我。 请帮忙。 更新 我试过用标准的Websocket库(带有node.js的ws模块),问题相似。 我只能达到456个连接的客户端。 更新2 我在几个服务器实例之间分配连接的客户端。 每一个客户端都通过其他端口连接。 不幸的是,这个改变并没有帮助我。 关联用户总数与以前一样。