저는 gunicorn과 nginx (프록시 서버)가 제공하는 멋지게 작동하는 django 웹 사이트를 가지고 있습니다. 이제 socket.io와 nodejs를 사용하여 해당 웹 사이트에 채팅 메커니즘을 추가하고 싶습니다. 문제는 채팅을 완벽하게 잘 node5 서버 (포트 5000에서 듣고있다)에 직접 연결할 때 nginx 프록시 nodejs에 socketio 요청을 사용하려고 할 때 작동하지 않습니다.Socket.io가 nginx와 작동하지 않습니다.
여기에/사이트를 기반으로/내 nginx를 파일입니다 DIR BTW 나는 (그것이 어떤 차이가있는 경우) nodejs를 관리 할 수 PM2를 사용하고
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";
}
}
.
편집 :
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 (브라우저)에 오류가 없으며 성공적인 클라이언트 - 서버 연결 후에 'pm2 logs app_name'을 사용하여 nodejs 서버의 출력을 볼 수 있으므로 연결이 설정됩니다. 다른 곳에서 오류를 찾을 수 있습니까? – atx
클라이언트 - 서버 연결은 성공적이지만 메시지가 다른 클라이언트로 전송되지 않습니다. – atx