javascript - socket.io请求在一段时间后出错
伊谢尔伦
伊谢尔伦 2017-04-10 15:07:24
[JavaScript讨论组]

构建了一个实时应用,部署在服务器上面,但是每次运行一段时间后socket.io就报错了,错误是这样的


前面都是正常的,某一时刻突然就不行了,重启node才行,经常这样
socket.io版本是1.3.5,node版本是0.10.29,node代码是这样的,
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io').listen(http);
var user = {},
bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.post('/test', function(req, res) {
var msgBody = JSON.parse(req.param('message'));
console.log(msgBody);
console.log(new Date());
io.emit('chat message', msgBody);
res.send('hello world');
console.log(new Date());
});

io.on('connection', function(socket) {
console.log('connecting');
socket.on('chat message', function(msg) {
console.log(msg);
io.emit('chat message', msg);
});
});

http.listen(4012, function() {
console.log('listening on *:4012');
});
客户端的代码如下:
var socket = io.connect('http://localhost:4012');

第一次发帖。。实在不知道怎么办,求帮助,万分感谢!

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
ringa_lee

做过一个聊天应用,给你参考参考:https://github.com/yuanzm/Live-Chat

黄舟

从截图和代码很难定位出真正原因,不知道 node 那边服务器压力是否过大,也不知道是不是因为 node 资源耗尽了造成的问题,最好多在 node 里面打日志来确定究竟在哪一步失败了,特别是把 socket.io 的 error 等时间响应一下,输出日志。

代码看上去没有明显问题,这是 socket.io 的典型用法。截图上看有几个值得尝试的改动:

  • 不是说 socket.io 1.3.5 么,为什么截图里面是 socket.io-1.2.0?会不会客户端和服务端版本不匹配?
  • 你可以设置客户端的 transport 选择顺序为 ["websocket", "polling"],或许能节省不少服务器资源。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号