【发布时间】:2018-11-18 08:00:05
【问题描述】:
我尝试在实时服务器上使用套接字 io,但出现此错误。
polling-xhr.js:264 GET http://sub.domain.com:3000/socket.io/?EIO=3&transport=polling&t=MFUVMS5 net::ERR_TIMED_OUT
但在我的本地服务器上,这些文件运行良好。我正在使用 socket.io 和 PHP。
这是我的代码:
server.js
var socket = require('./node_modules/socket.io');
var express = require('./node_modules/express');
var app = express();
var server = require('http').createServer(app);
var io = socket.listen(server);
var port = process.env.PORT || 3000;
// server active console view
server.listen(port, function () {
console.log('Server listening at port %d', port);
});
io.on('connection', function (socket) {
// show new added online user
socket.on('now_online', function (data) {
io.sockets.emit('now_online',{
id: data.id,
name: data.name
});
});
});
main.js
var socket = io.connect('http://'+window.location.hostname+':3000');
socket.on('new_online_user', function (data) {
if (login_id != data.online_user) {
$('#contacts-list .contact[data-chat='+data.online_user+']'+' .contact-status').addClass('online');
}
});
package.json
{
"private": true,
"dependencies": {
"gulp": "^3.9.1",
"express": "^4.16.2",
"socket.io": "^2.0.4"
}
}
我在 google 和 StackOverflow 上搜索了这个问题,但解决的那些对我不起作用。
非常感谢。
【问题讨论】:
-
3000 端口是否对 Web 服务器上的套接字开放?
-
“我正在使用 socket.io 和 PHP”。您有 Javascript 中的客户端和服务器代码,PHP 标记是偶然的,还是这个问题中缺少某些内容?
-
请检查服务器是否安装了节点模块
var socket = require('./node_modules/socket.io'); var express = require('./node_modules/express'); -
@LovepreetSingh Yes port is open for socket .io
-
@mike42 嗨,我正在处理 Ajax 的服务器请求。我想,我的问题没有任何意义。