我尝试通过socket.io创建一个实时应用程序。 服务器端:
var express = require('express');
var io = require('socket.io');
var engine = require('ejs-locals');
var app = express()
, server = require('http').createServer(app)
, io = io.listen(server);
app.engine('ejs', engine);
app.set('view engine', 'ejs');
app.get('/', function(req, res){
res.redirect('/login')
});
app.use(express.static(__dirname + '/public'));
app.listen(3001);
io.sockets.on('connection', function (socket) {
console.log('Client connected...');
socket.on('send_login_data', function (data) {
console.log(data);
});
});
客户方:
var socket = io.connect('http://localhost:3001');
socket.on('connect_failed', function(){
console.log('Connection Failed');
});
socket.on('connecting', function () {
console.log('connecting...');
});
socket.on('connect', function () {
console.log('connected!');
});
我发现了下一个错误:
获取http://localhost:3001/socket.io/1/?t=1447539302809 404(未找到)
据我了解,这是一次握手错误。 我该如何解决?
感谢名单。
答案 0 :(得分:1)
首先,请确保在某些模块未正确安装的情况下,不会出现任何错误。
然后,确保客户端和服务器上的socket.io版本号相同,并且服务器上安装了服务器端版本。
然后,我以前看到人们对此有疑问,即使按照socket.io网站上的说明进行操作也是如此,并且从未明确该序列的确切错误。但是,我所知道的是,这个序列将起作用:
var express = require('express');
var app = express();
var server = app.listen(3001);
var io = require('socket.io').listen(server);
查看相关问题:Where is my client side socket.io?和Node + Socket.io Connection issue
我不知道这是否是导致问题的原因,但是您正在尝试重新定义io
变量,因为它已在此声明:
var io = require('socket.io');
var app = express()
, server = require('http').createServer(app)
, io = io.listen(server);
对io = io.listen(server)
的第二次引用基本上是这样的:
var io = require('socket.io');
var app = express();
var server = require('http').createServer(app);
var io = io.listen(server);
哪个不正确Javascript。同样,可能不会导致您的问题,但它在技术上不合适Javascript。