Tag: socket.io 1.0

如何将客户端关联的数据存储在socket.io 1.0中

文档说socket.io现在不支持.get .set 是否可以存储客户端关联的数据 io.sockets.on('connection', function (client) { client.on('data', function (somedata) { client['data'] = somedata; }); }); 万一我需要多个节点?

获取客户端当前正在断开连接事件的房间列表

我试图find客户端当前正在断开连接事件的房间列表(closures浏览器/重新加载页面/互联网连接被丢弃)。 我需要它的原因如下:用户进入了几个房间。 其他人也这样做了。 然后他closures浏览器选项卡。 我想通知所有在他离开的房间里的人。 所以我需要在“断开连接”事件中做一些事情。 io.sockets.on('connection', function(client){ … client.on('disconnect', function(){ }); }); 我已经尝试了两种方法,发现他们都是错的: 1)遍历adapter.rooms 。 for (room in client.adapter.rooms){ io.sockets.in(room).emit('userDisconnected', UID); } 这是错误的,因为适配器房间有所有房间。 不仅是我的客户所在的房间。 2)通过客户client.rooms 。 这将返回客户端所在房间的正确列表,但不会返回断开连接事件。 在断开连接时,这个列表已经是空的[] 。 那我该怎么做呢? 我在写这篇文章的时候使用了最新的socket.io:1.1.0

Socket.io命名空间和服务器不共享中间件?

我为我的socket.io/express应用程序创build了一些护照authentication中间件。 看起来像: io.use(function (socket, next) { var data = cookie.parse(socket.handshake.headers.cookie); var sessionID = cookieParser.signedCookie(data['connect.sid'], 'my balonga has a first name'); sessionStore.get(sessionID, function (err, data) { if (err) next(err); socket.handshake.passport = data.passport; next(); }); }); 它工作得很好,但我有一个名称空间,它似乎使用不同的套接字。 这是否意味着我必须为每个名称空间重用我的中间件? 我注意到,我连接到我的命名空间,它调用基础服务器的中间件,然后命名空间,这意味着,如果我在两个地方包括中间件,我做了两个我需要的操作。 我可以在不删除基础层中间件的情况下防止这种情况发生吗? 这些都不是应用程序的破坏者,但它会改变我的架构一点,我担心我会在某个时候authentication差距。 概要: 我必须为每个名称空间重用我的中间件吗? 在连接到名称空间的情况下,是否可以防止在不移除基础层中间件的情况下调用默认名称空间中间件?

如何将二进制数据从Node.js socket.io服务器发送到浏览器客户端?

我一直在浏览整个Socket.IO文档,但是,尽pipe他们承诺它在那里,但我找不到一个简单的例子,即如何在服务器/客户端之间发送二进制数据。 它是如何完成的?

socket.io在空闲时断开客户端连接

我有一个使用socket.io(node.js后端)分发消息到所有login客户端的生产应用程序。 我的许多用户正在与socket.io服务器断开连接。 客户端的正常使用情况是保持Web应用程序在整个工作日内打开。 应用程序在工作日大部分时间都是空闲的,但应用程序仍然是开放的 – 直到socket.io连接丢失,然后应用程序将它们踢出去。 有什么办法可以使连接更可靠,所以我的用户不会经常失去与socket.io服务器的连接?

Ajax与Socket.io

我正在开发一个Web应用程序,我想知道哪种方法应该适合我的项目。 基本上我想显示给用户的是从请求到其他服务器的一些通知。 我的node.js应用程序获取所有的信息,然后传播给用户,保存到我的MongoDB副本。 这个想法很简单,但阅读有关方法,我发现这两种技术: Ajax:如果服务器上有新的内容,客户端将全部检查。 这将通过使用jquery ajax到我的服务器API(每30/60秒)完成。 Socket.io:客户端连接一次,然后维持永久的TCP连接(更实时)。 现在我已经说明了情况,我有以下问题: 我不会有太多的请求与Ajax? 想象一下,如果我们将应用程序扩展到100个用户,每分钟都会给服务器一个检查,那么每分钟会给我100个查询。 有一个套接字是否会在系统资源中“便宜”? socket.io会成为移动设备的问题吗? 带宽和性能。 服务器的响应始终是JSON格式的信息。 我读了now.js可以用于这个,但似乎该项目不再支持,所以不知道如果使用它将是一个好主意。 这两种方法如何caching? 我正在考虑为每个用户创build一个caching文件,这将由服务器端的node.js更新。 我想这可以用ajax很好的工作,但是socket.io呢? socket.io是否与许多浏览器不兼容? 我的应用程序将更专注于移动设备,我想这可能会让我考虑select阿贾克斯反而。 有其他build议吗? 我希望这可以清除我的头脑和其他人在相同的情况:)谢谢

socket io,node js,简单示例从服务器发送图像/文件到客户端

有没有关于如何提供图像的简单明了的例子? 从服务器到客户端? 通过缓冲或只是一个直接的电话下载? (目标是有效地近乎实时地获取图像文件,以便呈现近乎直播的图像stream),并附加到html图像标签或仅附加到html页面的主体中。 不完整的示例代码:(大部分是从官方示例中获取的,或者是来自stackoverflow的代码) index.js // basic variables var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var fs = require('fs'); // required for file serving http.listen(3000, function(){ console.log('listening on *:3000'); }); // location to index.html app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); // only to test chat sample code from […]

Socket.IO 1.0.x:通过id获取套接字

在0.9.x版本中,我们可以通过这样的ID获取套接字: io.sockets.socket(socketId) 但在1.0.x中,我们不能。 如何在1.0.x中通过idfind套接字?

socket.io客户端连接断开连接

我无法弄清楚为什么多次断开/连接一个socket.io连接不起作用? 服务器端代码: io.on('connection', function(socket){ console.log('a user connected'); socket.on('disconnect', function(){ console.log('user disconnected'); }); }); 客户端代码: var socket = io(); socket.on('connect', function() { console.log("connected from the client side"); }); $('#connect_button').click(function(){ socket.connect(); }); $('#disconnect_button').click(function(){ socket.disconnect(); }); 它断开连接。 但不重新连接。 我使用的是Socket.io 1.0。 请帮忙。

Socket.io连接恢复到轮询,从不触发'连接'处理程序

我正在尝试将socket.io添加到我现有的node.js应用程序上。 我已经在服务器端添加了socket.io库,如下所示(直接跟在http://socket.io/get-started/chat/ )之后: var express = require('express') , http = require('http') , path = require('path') , fs = require('fs'); var app = express(); var http = http.Server(app); var io = require('socket.io')(http); // Express settings […] // Express routes […] // Socket.io Communication io.on('connection', function(socket) { console.log('a user connected'); }); // Start server app.listen(config.port, function () […]