Articles of socket.io

升级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 我在几个服务器实例之间分配连接的客户端。 每一个客户端都通过其他端口连接。 不幸的是,这个改变并没有帮助我。 关联用户总数与以前一样。

IOAcknowledge方法不适用于Android的SocketIO?

我正在使用socketio.jarbuild立客户端和服务器之间的连接。 即从我的Android设备(客户端)到节点服务器。 由于我能够成功连接,发送和接收消息到该服务器。 问题是为什么我没有从服务器发送消息后从套接字得到任何确认 。 有一个callBack接口IOAcknowledge作为参数,从来没有工作/为我调用。 socket.emit( "sendMessage", new IOAcknowledge() { @Override public void ack(Object… arg0) { System.out.println("sendMessage IOAcknowledge" + arg0.toString()); } }, "Hi!! how are you"); 有谁知道解决scheme何时或如何IOAcknowledge将工作? 编辑:我正在使用的套接字库的文档链接。 官方和Github

尝试运行node.js样板工程时,找不到模块“Socket.IO-node”

当我尝试运行一个用node.js样板工程创build的项目时,出现错误,我使用此命令使用NPM安装了socket.io: npm安装socket.io 我得到的错误是: node.js:189 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: Cannot find module 'Socket.io-node' at Function._resolveFilename (module.js:317:11) at Function._load (module.js:262:25) at require (module.js:346:19) at Object.<anonymous> (/Users/mairead.buchan/Documents/WORK/auto-aggro/server.js:6:12) at Module._compile (module.js:406:26) at Object..js (module.js:445:10) at Module.load (module.js:334:31) at Function._load (module.js:293:12) at Array.<anonymous> (module.js:458:10) at EventEmitter._tickCallback (node.js:181:26) 我的问题是,我是否有某种不正确的节点/ socket.io版本的组合? (我知道socket.io已经达到了0.7)。 仅供参考我昨天做了一个编译从源节点(使用5.0),并已安装所有其他使用NPM今天所以它应该都在最新版本运行 […]

我怎样才能有效地加载testing与无头浏览器的Web应用程序?

我有几个无头浏览器的经验,但只用于testing和不加载testing。 什么是启动500-1000 websocket客户端加载testing应用程序的最佳方法? 这是简单的只是循环一堆setTimeout增加得更久? 我可以自己build立实际的testing,我只是好奇哪个框架最适合这个。 我有ZombieJS和PhantomJS(以及Casper和Webspecter)的经验。