2013-05-19 2 views
0

socket.io를 사용하면 클라이언트가 양식을 게시 할 때 전화가 끊깁니다 (페이지가 계속로드 됨) - 클라이언트가 즉시 다시 정상적으로 실행되는 노드 서버를 중지합니다.socket.io client hangs up

서버 당신은 항상 HTTP 요청을 종료해야하지만, 당신이 당신의 post 핸들러에서 그 일을하지 않을

<script src="socket.io.js"></script> 
<script> 
var socket = io.connect('http://localhost:3000'); 
socket.on('messages', function (data) { 
    console.log(data); 
    $('.entry').first().before(
     '<div class="entry well well-large">' 
     + data.user 
     + ' says: ' 
     + data.message 
     + '</div>'); 
}); 

답변

1

app.post('/', function(req, res) { 
    io.sockets.emit('messages', { 
    user: req.body.user, 
    message: req.body.message 
    }); 
}); 

클라이언트. 그렇게하지 않으면 Express는 브라우저에 응답을 보내지 않고 브라우저는 브라우저를 기다리게됩니다 (어느 시점에서 기다리면 시간이 걸릴 수 있습니다).

대신을 시도해보십시오

app.post('/', function(req, res) { 
    io.sockets.emit('messages', { 
    user: req.body.user, 
    message: req.body.message 
    }); 
    // end the request by ending the response 
    res.end(); 
}); 

(즉 별도의 프로토콜이기 때문에 그것이 socket.io있는 메시지를 보낼 충분하지 않습니다)

+0

작품. 이렇게 간단한, 감사합니다 :) – zimt28