2013-05-19 211 views
0

使用socket.io客戶端掛起(頁面不斷加載)發佈表單 - 停止節點服務器客戶端立即再次運行良好。socket.io客戶端掛斷

服務器

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

客戶

<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

你應該總是最後一個HTTP請求,但你不這樣做,在你的post處理程序。如果你不這樣做,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