Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Redis到Socket.IO_Django_Redis_Socket.io_Real Time - Fatal编程技术网

Django Redis到Socket.IO

Django Redis到Socket.IO,django,redis,socket.io,real-time,Django,Redis,Socket.io,Real Time,我正在使用Django制作一个实时网络应用程序。Django负责所有的重物搬运。为了使应用程序具有实时性,在Django中进行更改时,会将其发布到redis。然后我设置了一个node.js应用程序,将数据从redis封送到socket.io 所以现在的情况是这样的 Django->Redis->Node.js->Socket.IO->Browser 我同意使用redis,认为它很棒。我调查过,但这不是我要找的。有没有办法做到: Django->Redis->Socket.IO->Browser?

我正在使用Django制作一个实时网络应用程序。Django负责所有的重物搬运。为了使应用程序具有实时性,在Django中进行更改时,会将其发布到redis。然后我设置了一个node.js应用程序,将数据从redis封送到socket.io

所以现在的情况是这样的

Django->Redis->Node.js->Socket.IO->Browser

我同意使用redis,认为它很棒。我调查过,但这不是我要找的。有没有办法做到:


Django->Redis->Socket.IO->Browser

Redis和Socket.IO不直接通信。。您需要介于两者之间的服务器,特别是当您使用WebSocket、长轮询等时。

您可以使用

您所做的与Trello相似:


我们在npm上启动了一个名为
bus.io
的项目。它应该对你有帮助。它简化了将套接字连接到发布订阅并向其分发消息的过程

在服务器上

var express = require('express')
var app = express();
app.use(express.static(__dirname+'/public'));

var server = require('http').Server(app).listen(3000);

var bus = require('bus.io')(server);
在客户机上

<script type="text/javascript src="/bus.io/bus.io.js">
  var sock = io.connect();
  sock.on('connect', function () {
    sock.message().action('say').content('hello').deliver();
  });
  sock.on('say', function (msg) {
    console.log(msg.content());
  });
</script>
sock.message().target('everyone').action('say').content('hello').deliver();
或者在客户机上

<script type="text/javascript src="/bus.io/bus.io.js">
  var sock = io.connect();
  sock.on('connect', function () {
    sock.message().action('say').content('hello').deliver();
  });
  sock.on('say', function (msg) {
    console.log(msg.content());
  });
</script>
sock.message().target('everyone').action('say').content('hello').deliver();
还有速记

sock.message({target:'everyone', action:'say', content:'hello'}).deliver();
您还可以更改角色的分配方式,默认情况下,它是
socket.id

bus.actor(function (sock, cb) {
  //so if you had a session you could get the user name from the session
  cb(null, sock.handshake.session.user);
});
消息通过总线自动从客户机传播到其他客户机。总线构建在redis和socket.io的平台上

如果您有任何问题或希望获得帮助,请联系我们或github上的项目