Tag: socket.io

socket.io中的发射方法的成功callback

我试图从我的客户端发出自定义消息。 我需要对其成功和失败采取一些行动。 现在,我怎样才能附加成功callback发射方法? 对于错误callback,我使用暴露事件文档,并得到它的工作 socket.on('error', () -> console.log("Error Occured")) 为了成功,我试了一下 socket.emit('my custom method', {content: json},() -> console.log("Emitted")) 不pipe这个callback是成功还是失败,这个callback都不会被触发。 我怎样才能获得成功处理程序?

如何在需求以外的快速访问会话?

我知道我可以使用 function(req, res) { req.session } 使用快递。 但是我需要访问响应函数之外的会话。 我将如何去做呢? 我使用socket.io传递信息添加post和评论。 因此,当我在服务器端收到socket.io消息时,需要使用会话来validation发布信息的人员。 但是,因为这是通过socket.io来完成,所以没有req / res。

socket.io:发送消息到特定的房间(客户端)

在socket.io中,如果要发送消息到特定的房间,通常在服务器端使用特定的语法: io.to(room).emit('event', 'message'); 。 但是, 客户端 (我的意思是在浏览器中运行的与socket.io相关的代码)如何表示消息应该到达特定的房间? 创build这样的东西是很常见的(当然服务器必须评估它): socket.emit('chat message', {room: 'abc', msg: 'hello there'}); 或者,socket.io客户端库为此提供了特定的语法? 编辑:澄清,我从上面的build议似乎工作,我只是不知道是否有更好的解决scheme。

如果服务器closures,如何捕获浏览器抛出的ERR_CONNECTION_REFUSED?

我觉得这个问题很简单,但是我还没有在官方的Socket.io文档中find答案。 我有我的Socket.io服务器和客户端通信成功,当我closures服务器,客户端将尝试重新连接到服务器失败。 这在Chrome开发者控制台中显示: 有什么方法可以在客户端Javscript中检测到这个事件,并以某种方式做出反应? 我想我会在页面上显示一个对话框,如“对不起,服务器负载很重”等。

如何在带有套接字(socket.io)的NodeJS中查找客户端的响应时间(延迟)?

我试图用NodeJS创build一个多人游戏,我想同步客户端之间的动作。 在客户端和服务器之间find延迟(请求返回到客户端的时间)的最佳方法是什么? 我的第一个想法是客户端#1可以发送一个时间戳与请求,所以当客户端#2将收到客户端#1的行动,他将调整是行动的速度,以消除请求的延迟。 但是问题是两个客户端的系统date时间可能不相同,所以根据客户端#1的请求不可能知道卷轴延迟。 另一种解决scheme是使用服务器的时间戳,但现在我怎么知道客户端的延迟?

socket.io socket.set和socket.get – 什么是callback参数?

我只是想附加一些variables到我的套接字,但我不明白.get和.set方法。 他们都有callback的第三个参数。 这可以省略吗? 这是什么?! callback本身是否有参数? 我最好的猜测是,当socket.io没有使用内存存储,而是将这个东西保存在其他地方,并需要一个错误检查callback。 socket.on('set nickname', function (name) { socket.set('nickname', name, function (arguments) { doSomethingMysterious(); }); 我使用的是socket.io 0.9.x 该函数在socket.js中定义 /** * Stores data for the client. * * @api public */ Socket.prototype.set = function (key, value, fn) { this.store.set(key, value, fn); return this; };

NPM – 无法安装socket.IO

我正在尝试在npm上安装socket.io,以便在nodeJS服务器上使用。 首先,当我input“npm install socket.IO”时,我在日志中写了一些关于python和node-gyp的错误信息。 我安装了Python 2.7.3并设置了环境variables。 现在我得到了一个新的错误,这与Visual Studio有什么关系(VS和npm有什么关系?是关于编译器的?)。 错误是一样的在这里npm安装一些包(sqlite3,socket.io)失败,错误MSB8020在Windows 7上但是,当我在答案中使用的选项,而不是错误它告诉我有关可能的数据丢失(c4267 )但不logging任何错误。 然后,当我启动我的应用程序,它告诉我无法find模块socket.io仍然可以从这里得到什么? 哦,还有当我做npmconfiguration得到根它告诉我“未定义”它可以有什么关系吗? 我应该在全球还是在本地安装模块?

Socket.io:如何处理closures连接?

我试图了解哪些是我的应用程序的“物理”限制。 在客户端: var socket = io.connect("http://127.0.0.1:6701"); socket.on('connect', function() { socket.disconnect(); }); socket.on('disconnect', function() { socket.socket.reconnect(); }); 在服务器端: var io = require('socket.io').listen(6701); io.sockets.on('connection', function(socket) { socket.on('disconnect', function(reason) { var o = Object.keys(socket.manager.open).length , c = Object.keys(socket.manager.closed).length , cA = Object.keys(socket.manager.closedA).length , h = Object.keys(socket.manager.handshaken).length console.log("open: " + o) console.log("closed: " + c) console.log("handshaken: " + h) […]

在Node.js服务器和浏览器之间共享二进制缓冲区

有一个如何在node.js和包含二进制数据的浏览器之间共享缓冲区的问题。 我对使用Socket.io作为传输层感到非常满意,但问题是没有为浏览器移植Buffer类 。 不是我能find的东西 我也遇到了binary.js ,我想知道是否有一个很好的方法来将它们的socket.io作为传输层,将Binary.js作为数据介质。 我也看到了这个问题 ,这是一个有关主题的问题 ,但并没有真正解决问题。 我知道socket.io添加二进制支持,但我还没有find任何有关该主题的文档。 更新: 看来binary.js不会是解决scheme。 我想要的基本要求是与浏览器共享Buffer在节点中具有的相同function。 我的需求包括两件事情: 在服务器和浏览器中以相同的方式处理缓冲区。 支持二进制数据。 我可能会使用arrays缓冲区。 编辑:由于node.js运行在V8,你可以使用ArrayBuffer。 似乎问题解决了。 然而,据我所知,节点的人们决定创build一个缓冲模块并且在他们创build的C绑定(从Ryan Dahl给出的讨论)中pipe理它是一个好主意。 我认为这与缓冲如何在networking上完成有关。 这意味着ArrayBuffer仍然不是服务器和浏览器之间共享的好数据介质。

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