我试图理解这个socket.io代码,它使用Gevent和Redis /sub。显然,subscribe方法等待通道上的消息。
我可以拥有成千上万个频道,每个都有一个通道,用于将通知和聊天推送给一个用户吗?频道是用来做这个的吗?
def _sub_listener(socketio, chan):
"""
This is the method that will block and listen
for new messages to be published to redis, since
we are using coroutines
我用的是Node.js、Express、Redis和Socket.io。当Redis宕机时,Node.js将会终止。
我如何才能防止这种情况,可能是代码重新连接的地方或其他地方?
输出:
info - socket.io started
Express server listening on port 3000
错误:
events.js:72
throw er; // Unhandled 'error' event
^ Error: Redis connection to 127.0.0.1:6380 failed - connec
扩展socket.io应用程序的方法是什么?我看到以下问题,我不明白如何解决:
一个可缩放的socket.io应用程序如何向房间广播?换句话说,socket.io如何知道来自其他服务器的邻居?
我很难想象它应该如何工作--也许一个共享的变体存储存储所有必要的信息,比如redis --这是一种可能性吗?
编辑:我找到了这篇文章:
在此基础上,我做了以下工作:
var pub = redis.createClient();
var sub = redis.createClient();
var store = redis.createClient();
pu
我刚刚将socket.io更新到版本1.0.6,发现在socket.io/node_modules下不再有redis。
因此,我安装了socket.io-redis,因为这个线程表明这是正确的解决方案:
但是,在上一个版本中,我的app.js上曾经有以下代码:
var redis = require('socket.io/node_modules/redis');
var sub = redis.createClient();
使用这种新方法,运行节点redis会引发一个错误:它报告app.js没有createClient方法。
如何使用socket.io (1.0.6)和so
我希望其他人以前也遇到过这个问题:
问题描述
我将Socket.IO配置为使用redis-store模块,该模块非常适合在向房间广播/发送事件时保持节点实例的同步。但是,我一直在测试故障点,似乎在重新启动redis实例时,节点服务器停止从其他节点接收消息。
下面是我如何设置socket.io客户端(redis连接是在这段代码之前创建的)
// Setup the socket server for web clients
self.ioServer = socketIo.listen(9000);
self.ioServer.enable('browser client minific
我最近运行了npm install,它更新了我所有的包。由于某种原因,我的way服务器坏了(每当我试图加载一个页面时,它只加载了一部分,并死于这个错误)。我尝试回滚socket.io、redis和nodetime的版本,它们是堆栈跟踪中显示的包,但我没有幸运地让work服务器再次工作。帮助?我在OS上运行。
events.js:66
throw arguments[1]; // Unhandled 'error' event
^
TypeError: First argument must be a Buffer
以此示例代码为例:
//Redis Variables
var redis = require('socket.io/node_modules/redis');
var RedisStore = require('socket.io/lib/stores/redis');
var pub = redis.createClient();
var sub = redis.createClient();
var client = redis.createClient();
var redis_store = new RedisStore({
Socket.io正在执行多个请求以执行握手并建立与客户端的连接。对于集群,这些请求可能会到达不同的工作进程,这将破坏握手协议。我尝试使用radis,但没有成功
var cluster = require('cluster');
var config = require('./config/environment');
if(cluster.isMaster) {
var server = require('http').createServer();
var socketio = require('socket.io'
我正在使用部署在Heroku上的Node & Express 4.0,并且我试图用Redis实现Socket.io作为aa会话存储。所以我把这个作为我当前的代码:
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var RedisStore = io.RedisStore;
if (process.env.REDISTOGO_URL) {
// inside if
我希望使用WebSocket将数据推送到客户端。我现在不知道如何将数据(从Redis)返回到客户端。有人能解释一下吗?
sockets_controller.rb
class SocketsController < WebsocketRails::BaseController
def create
send_message :new_event, {:message => 'TEST'}
end
end
events.rb
WebsocketRails::EventMap.describe do
subscribe :new_event,