Tag: socket.io

RabbitMQ vs Socket.io?

我正在做实时的Web应用程序开发。 浏览器用户应该能够通过node.js服务器与彼此进行通信。 其中一个用户写邮件,所有其他用户将得到它。 我不太清楚RabbitMQ是如何工作的。 但从快速阅读看来,它似乎处理消息的发布/订阅。 一个用户(在浏览器中)发布一些东西和订阅者(​​在其他浏览器中)得到这个消息。 这不是什么Socket.io使用websockets? 这是我的问题: 他们每个人有什么优点/缺点? 可以用Socket.ioreplaceRabbitMQ吗? 有没有我需要RabbitMQ的networking应用程序,其中Socket.io不足够?

获取Socket.io客户端的连接状态

我正在使用Socket.io,我想知道从客户端连接到服务器的状态。 像这样的东西: socket.status // return true if connected, false otherwise 如果连接断开或者由于某种原因断开连接,我需要这些信息给用户一个视觉反馈。

Socket.IO问题与控制字符

我正在实现一个使用websockets和通过Telnet访问的控制台的应用程序。 在通过websockets和控制台build立的连接之间有一个通信。 我正在经历一个奇怪的问题: 如果在控制台中input了某个string常量时,它会向一个已build立的套接字发送一个string常量。 如果我发送一个从控制台作用域收到的string它似乎打开一个新的套接字(不知道),因为在debugging日志中我看到它,并在浏览器端(networking套接字)它提醒我一个新的连接。 如果我发送一个本地string(而不是从另一个范围收到的),它发送正确。 (注释行:client.send(message)) 我在这里分享nodeJS代码,考虑到现在这是一个testing应用程序,所以它只能假设一个套接字和websockets连接: // Sample based on: http://elegantcode.com/2011/05/04/taking-baby-steps-with-node-js-websockets/ // Changed for sockets.io 6.x => 7.x var events = require('events'); var eventEmitter = new events.EventEmitter(); var http = require('http'); var socketIO = require('socket.io'); var static = require('node-static'); var port = 2000; var clientFiles = new static.Server('./client'); var httpServer = http.createServer( function(request, […]

Node.js,Socket.io,Redis pub / sub大容量,低延迟困难

当连接socket.io/node.js和redis pub / sub以试图创build一个由可以处理多个传输的服务器事件驱动的实时Web广播系统时,似乎有三种方法: 'createClient'一个redis连接并订阅频道。 在socket.io客户机连接上,将客户机join到socket.io机房。 在redis.on(“message”,…)事件中,调用io.sockets.in(room).emit(“event”,data)分发给相关房间中的所有客户端。 像如何在socket.io中重用redis连接? 'createClient'是一个redis连接。 在socket.io客户端连接上,将客户端join到socket.io房间并订阅相关的redis通道。 在客户端连接closures和接收到消息调用client.emit(“event”,data)中包含redis.on(“message”,…)以引发特定客户端上的事件。 就像在使用socket.io中的RedisStore的例子中的答案一样 按照socketio-spec协议,使用RedisStore烘焙到socket.io中并从Redis中的单个“dispatch”通道“广播”。 Number 1允许为所有客户端处理Redis子和关联事件一次。 Number 2提供了一个更直接的挂钩到Redis pub / sub。 3号更简单,但对消息传递事件的控制很less。 然而,在我的testing中,所有连接的客户端都超过1个,performance出意外的低性能。 有问题的服务器事件是尽快发布到redis通道的1,000条消息,尽快分发。 性能是通过连接客户端的时间来衡量的(socket.io-client基于日志时间戳进入Redis列表进行分析)。 我猜测,在选项1中,服务器接收到消息,然后将其顺序写入所有连接的客户端。 在选项2中,服务器多次接收每条消息(每个客户端订阅一次)并将其写入相关的客户端。 在任何情况下,服务器都不会到达第二个消息事件,直到它传达给所有连接的客户端。 情况明显加剧,并发性上升。 这似乎与堆栈function的智慧不符。 我想相信,但我正在挣扎。 这种情况(大量消息的低延迟分布)只是没有这些工具的选项(还?),还是我错过了一个把戏?

在Express 4和express-generator的/ bin / www中使用socket.io

所以这里是交易:我试图在一个快速项目中使用socket.io。 在Express Js 4发布后,我更新了我的快速生成器,现在应用程序的初始function进入./bin/www文件,包括那些variables(www文件内容: http : //jsfiddle.net/avMa5/ ) var server = app.listen(app.get('port'), function() {..} (通过npm install -g express-generator ,然后express myApp 就这么说吧,让我们回忆一下socket.io文档是如何要求我们解雇的: var app = require('express').createServer(); var io = require('socket.io')(app); 好吧,但我不能在app.js里面做,就像推荐一样。 这应该在./bin/www中完成才能工作。 在./bin/www这是我能做些什么来得到它的工作: var io = require('socket.io')(server) 确定这个工程,但我不能在任何地方使用io var,我真的不想把我的socket.io函数在www文件。 我想这只是基本的语法,但我不能得到这个工作,甚至没有使用module.exports = server或server.exports = server或module.exports.io = app(io)上的WWW文件 所以问题是:我如何使用socket.io这个/ bin / www文件作为我的应用程序的起点?

使用Socket.io更新所有客户端?

是否有可能强制所有的客户端使用socket.io更新? 我已经尝试了以下,但是当新的客户端连接时似乎没有更新其他客户端: Serverside JavaScript: 我试图发送消息给所有的客户端,其中包含当前连接的用户数量,它正确地发送的用户数量….但客户端本身似乎并没有更新,直到页面被刷新。 我希望这是发生的实时。 var clients = 0; io.sockets.on('connection', function (socket) { ++clients; socket.emit('users_count', clients); socket.on('disconnect', function () { –clients; }); }); 客户端JavaScript: var socket = io.connect('http://localhost'); socket.on('connect', function(){ socket.on('users_count', function(data){ $('#client_count').text(data); console.log("Connection"); }); });

如何与Socket.IO 1.x和Express 4.x共享会话?

如何与Socket.io 1.0和Express 4.x共享会话? 我使用Redis商店,但我相信这不重要。 我知道我必须使用中间件来查看cookie和获取会话,但不知道如何。 我搜查,但找不到任何工作 var RedisStore = connectRedis(expressSession); var session = expressSession({ store: new RedisStore({ client: redisClient }), secret: mysecret, saveUninitialized: true, resave: true }); app.use(session); io.use(function(socket, next) { var handshake = socket.handshake; if (handshake.headers.cookie) { var str = handshake.headers.cookie; next(); } else { next(new Error('Missing Cookies')); } });

Socket.IO文档

有没有关于Socket.IO的文档? 它的网站只有一个很差的wiki,没有完整的文档解释连接,排放,要求等等

socket.io客户端库在哪里?

据我所见,如果node.js没有被用作web服务器,我们不知道在哪里定位socket.io的客户端脚本。 我find了一个客户端文件的完整目录,但是我需要它们的组合版本(比如在使用node.js web服务器时提供服务)。 有任何想法吗?