[英]Connect to a remote socket.io server from Django server
我正在尝试构建一个实时Django应用程序。 由于托管服务的工作方式,我无法与Django服务器并行启动Websocket服务器。
我通过使用socket.io在单独的NodeJS网站上创建了一个快速服务器,并使Django服务器上的客户端也连接到远程socket.io服务器,从而实现了用户之间的交互。
但是,我想让我的Django服务器直接将事件发送给用户。 为此,我想在Django服务器和NodeJS服务器之间创建一个连接。 在python中类似的东西:
socket = io("http://socket.io.server")
socket.emit('eventForUsers')
反正我有实现这一目标的方法吗?
我发现的唯一信息似乎要求我从Django应用程序运行并行服务器,而我不能这样做,因为主机不允许我运行长期进程。
这实际上取决于什么是最简单的解决方案以及您的要求。 (如果您想要实时双向消息传递,那么我建议使用socket.io-client而不是POST
示例)
您可以(例如)使用从Django到Node的POST
请求
Django: python
示例(还有其他方法可以从Django执行POST到Node)
reqParams = {"action":"doThis","data":"put the pizza in the oven"}
import requests
requests.post('http://ip:port/route', params = reqParams)
节点示例:在/route
(快速)上侦听帖子,并输出Django请求的参数
var express = require('express');
var app = express();
app.post('/route', function (req, res) {
console.log(req.query); res.end();
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
然后,您可以使用req.params
的数据执行操作,例如向socket.io
客户端(或特定客户端)广播内容
这也可以通过另一种方式来完成,即执行请求以使用POST (GET,...)
将数据从Node发送到Django POST (GET,...)
Socket.io-client
另一个(简便)的解决方案是将socket.io-client
包含在Django Web应用程序中,以便在浏览器打开Web应用程序时将其作为客户端连接到Node socket.io
服务器。
(在django中使用javascript)
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io('http://ip:port');
socket.on('connect', function(){alert("Hello World!");});
socket.on('event', function(data){});
socket.on('disconnect', function(){});
</script>
更多资源: 1. JavaScript(Django Docs) 2. 在模板中包含静态文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.