Und*_*ing 3 javascript node.js socket.io pug
出于某种原因,当我查看chrome开发者工具网络时,我不断发现" http://127.0.0.1:3000/socket.io/socket.io.js"404.我花了一个多小时试图理解为什么这不起作用,因为它之前工作正常,我不认为我改变了什么.
服务器:
var express = require('express'),
session = require('express-session');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var MongoStore = require('connect-mongo')(session);
var sessionMiddleware = session({
resave: false,
saveUninitialized: false,
secret: 'secret',
store: new MongoStore({url: "mongodb://localhost:27017/database"})
});
app.use(sessionMiddleware);
io.use(sessionMiddleware, function(socket, next) {
sessionMiddleware(socket.request, socket.request.res, next);
});
io.sockets.on('connection', function (socket) {
console.log("Socket connected");
});
app.set('view engine', 'pug');
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res) {
res.render('index');
});
app.listen(3000);
console.log('listening');
Run Code Online (Sandbox Code Playgroud)
帕格档案:
html
head
script(src="http://127.0.0.1:3000/socket.io/socket.io.js")
script(type='text/javascript', src='../javascripts/chat.js')
body
Run Code Online (Sandbox Code Playgroud)
客户端javascript:
try {
var socket = io.connect('http://127.0.0.1:3000');
} catch(e) {
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
改变这个:
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
至:
server.listen(3000);
Run Code Online (Sandbox Code Playgroud)
app.listen()创建一个新的和不同的服务器,因此连接到socket.io的服务器不是实际监听的服务器,因此你的socket.io服务器不是活动的,/socket.io/socket.io.js如果脚本文件不能处理请求或传入连接没先加载失败.
请参阅此答案,详细了解app.listen()您的代码布局方式的内容和原因:
websockets,express.js并且无法与服务器建立连接
注意,您可以使用app.listen(),但您必须不创建自己的服务器,并且必须从中捕获返回值app.listen()并将其用作传递给socket.io初始化的服务器:
var app = express();
var server = app.listen(3000);
var io = require('socket.io')(server);
Run Code Online (Sandbox Code Playgroud)
这与您的代码结构不完全相同(但您可以通过这种方式重新排列代码).
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |