redis sub/pub in or out of io.connect callback
redis sub/pub in or out of io.connect callback
如果我想将数据发送给连接的每个人,我是否应该将 Redis 订阅事件从io.connect
回调中移除?还是像这样把它放在io.connect
里更好:
io.on('connection', function(socket){
sub.on('message',function(channel,msg){
Project.findAll({ where: {id: msg} },{raw:true}).success(function(d) {
console.log(d);
io.sockets.emit("activities",d);
})
});
});
会有什么区别吗?
节点.js
var express = require('express'),
app = express(),
http = require('http').createServer(app),
io = require("socket.io").listen(http),
redis = require("redis"),
Sequelize = require('sequelize');
var pub = redis.createClient();
var sub = redis.createClient();
sub.subscribe('global');
app.get('/p/:tagId', function(req, res){
res.render('index.html')
});
sub.on('message',function(channel,msg){
Project.findAll({ where: {id: msg} },{raw:true}).success(function(d) {
console.log(d);
io.emit("activities",d);
})
});
io.on('connection', function(socket){
//** code **//
})
任何人都可以告诉我节点.js的代码有什么问题吗?
第二个代码示例看起来正确。您不希望将sub.on('message', function(channel, msg) {
放在 socket.io 连接处理程序中。每次有人连接时,都会添加新的事件处理程序。
您是否测试过它是否有效?您需要将某些内容发布到通道global
上,才能触发message
回调。
pub.publish('global', 'here is a message');
相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使用Socket.io将命令从客户端发送到服务器
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- HighChart : Usage of setData
- Socket.IO未定义变量
- Socket.io on Mozilla Rhino
- 如何在Ionic2测试版中包含Ionic.io服务
- socket.io发射三次
- AngularJS$q承诺使用socket.io
- Atom.io中AngularJS的方法完成
- 如何知道使用socket.io订阅/取消订阅频道
- 可以't连接客户端和服务器import.io
- 通过socket.io发射给特定的人
- 通过socket.io从浏览器流式传输视频
- 通过node.js和socket.io向特定用户发送数据
- java.io.IOException: write beyond end of stream OR java.lang
- redis sub/pub in or out of io.connect callback
- Socket.IO命名空间,调用未定义的函数.of()