使用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>');
});
答案 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
发送邮件是不够的,因为这是一个单独的协议)