gunicornとnginx(プロキシサーバーとして)がサービスしているdjangoのうまく機能しているWebサイトを持っています。ここでsocket.ioとnodejsを使用してそのWebサイトにチャットメカニズムを追加します。問題は、ソケット5000をlistenしているnodejsサーバーにsocketioを直接接続するとチャットが正常に動作するが、nodejにsocketio要求をプロキシするためにnginxを使用しようとすると動作しないということです。ここでSocket.ioはnginxと連携していません
は私のnginxのファイルがに/サイト対応/ dirのある
server {
listen 80;
server_name 127.0.0.1;
location = /favicon.ico {
access_log off;
log_not_found off;
}
location /static/ {
root /path/to/static;
}
location/{
include proxy_params;
proxy_pass http://unix:/path/to/file.sock;
}
location /socket.io/ {
proxy_pass http://127.0.0.1:5000;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
ところで私は(それはどんな違いがあれば)nodejsを管理するために、PM2を使用しています。
EDIT:
server.js:
var io = require('socket.io').listen(5000);
var fs = require('fs');
io.on('connection', function(socket){
console.log('connected');
socket.on('question', function(data){
console.log(data);
soc.emit('question', data);
});
socket.on('advice', function(data){
console.log(data);
soc.emit('advice', data);
});
socket.on('disconnect', function(){
console.log('disconnected');
});
});
client.js
var socket = io('http://127.0.0.1/socket.io/');
socket.on('question', function(data){
console.log(data);
});
socket.on('advice', function(data){
console.log(data);
});
$('#send').click(function() {
var msg = $('#msg').val();
if (msg == '') {$('#msg').focus();}
else{
data = {msg:msg};
socket.emit('question', data);
var msg = $('#msg').val('').focus();
}
});
あなたは「それは動作しません」_ _定義することができますか? HTTPエラー? JSエラー? – robertklep
私は間違いをしていません。ウェブサイトは正常に機能しています。 console.log(ブラウザ)にエラーはありません。クライアントとサーバーの接続が成功した後、pmj logs app_nameでnodejsサーバーの出力を見ることができるので、接続が確立されます。私が間違いを見つけることができる他の場所はありますか? – atx
クライアントとサーバーの接続は成功しましたが、メッセージは他のクライアントに送信されません。 – atx