這真的取決於什麼是最簡單的解決方案,以及您的要求是什麼。 (如果您想進行實時雙向通訊那麼我建議使用,而不是POST
例如socket.io客戶端)
POST(GET,PUT,...)
您可以(例如)使用POST
請求從你的Django到節點
Django的:python
例子(還有其他的方式來執行POST從Django中到節點)
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
客戶執行操作的PARAMS (或特定的客戶端)
這也可以做周圍的其他方式,執行請求從節點發送數據使用到的Django POST (GET,...)
Socket.io-client
在Django
另一個(容易)解決方案是包括socket.io-client
在你的Django Web應用程序,所以當web應用程序是通過瀏覽器打開它連接到您的節點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。Including the static files in your template
來源
2017-08-28 00:11:35
EMX
不錯,第一個解決方案看起來很聰明我會試試看,並讓你知道。關於第二種解決方案:除非我錯過了一些東西,這隻會將用戶連接到socket.io,而不是django服務器本身?我不明白我如何使用這種方法來進行通信Django - > client –
@RyanPergent我不知道你的確切場景,這就是爲什麼我建議這兩個,所以你可以認爲哪種解決方案最適合你(如果你想要webapp用戶像客戶端連接** socket.io **/else如果你想把webapp本身作爲一個'客戶端'然後使用** request **)。 – EMX
第一種方法工作得很好,唯一的就是'req.query'而不是'req.params' :)。謝謝! –