socket.io客户端挂起

时间:2013-05-19 20:05:42

标签: javascript node.js 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 个答案:

答案 0 :(得分:2)

您应该始终结束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发送邮件是不够的,因为这是一个单独的协议)