我跟隨此tutorial使用Django和Socket.io(節點js)構建實時應用程序。我正在建造一個流浪箱,並在我的主文件中配置了流浪機。現在,由於教程是一箇舊的帖子,我得到了很多錯誤。然而,在修復了一些廢棄的代碼後,這就是它的樣子。實現Django和socket.io一起工作
chat.js:
var server = require('http').createServer().listen(4000);
var io = require('socket.io').listen(server, {
'authorization': function(data, accept) {
if (data.headers.cookie) {
data.cookie = cookie_reader.parse(data.headers.cookie);
return accept(null, true);
}
return accept('error', false);
}
});
var cookie_reader = require('cookie');
var querystring = require('querystring');
var redis = require('redis');
var sub = redis.createClient();
sub.subscribe('chat');
io.on('connection', function (socket) {
sub.on('message', function(channel, message){
socket.send(message);
});
socket.on('send_message', function (message) {
values = querystring.stringify({
comment: message,
sessionid: socket.handshake.cookie['sessionid'],
});
var options = {
host: 'localhost',
port: 80,
path: '/node_api',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': values.length
}
};
//Send message to Django server
var req = http.get(options, function(res){
res.setEncoding('utf8');
//Print out error message
res.on('data', function(message){
if(message != 'Everything worked :)'){
console.log('Message: ' + message);
}
});
});
req.write(values);
req.end();
});
});
的index.html:
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
<script src="{% static "js/socket.io.js" %}"></script>
<script>
$(document).ready(function() {
var socket = io('http://localhost:4000');
socket.on('connect', function() {
console.log("connect");
});
...
...
...
</script>
但現在當我加載頁面我堅持這個錯誤
GET http://localhost:4000/socket.io/?EIO=3&transport=polling&t=LA7JSiV網:: ERR_CONNECTION_REFUSED
當我的index.html改變這種
var socket = io('http://localhost:4000');
這個
var socket = io();
我得到這個錯誤
GET http://vagrant-box.com/socket.io/?EIO=3&transport=polling&t=LA7NH61 404(未找到)
我究竟做錯了什麼?請幫我解決這個問題。您的幫助將非常感謝。謝謝。
我想解決完全相同的問題。你是否從django應用程序提供index.html? –
@JesusGomez是的。我從'home(requrest)'方法中'core'應用程序的視圖返回'index.html'。儘管它在'project-name.view'裏面並不重要。 – Aamu
你有沒有什麼運氣實現這個?能夠看到socket.io 1.0+的完整解決方案真是太棒了 –