socket.io 找不到 Express 4?
socket.io is not found with Express 4?
我一直在尝试让我的客户端连接到我的服务器,但是 chrome 总是打印
GET http://localhost:30653/socket.io/socket.io.js 404 (Not Found)
不知道哪里出了问题...
express 版本是“4.13.4”,socket.io 版本是“1.4.5”
这是我的代码:
app.js
var express = require('express');
var hbs = require('hbs');
var app=express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
io.on('connection',function(socket){
console.log("connected");
socket.emit('open');
});
app.set('port', process.env.PORT || 30653);
app.set('view engine','html');
app.engine('html',hbs.__express);
app.use(express.static('public'));
app.get('/',function(req,res){
res.render('chatroom');
});
app.listen(app.get('port'),function(){
console.log('this server is listening on port:'+app.get('port'));
});
客户:
$(function(){
var socket = io.connect('http://localhost:30653');
socket.on('open',function(){
console.log("open")
});
socket.on('system',function(json){
console.log("system");
});
});
欢迎任何帮助!我将不胜感激!
我认为您的 app.listen(...)
需要 server.listen(...)
因为您创建服务器的方式如下所示:http://socket.io/docs/#using-with-express-3/4。你这样做的方式,socket.io 没有连接到正确的服务器,因此没有为你提供 socket.io.js 文件。
您可以 app.listen()
,但前提是您在此处遵循不同的初始化过程:http://socket.io/docs/#using-with-the-express-framework
您需要在 app.js 行 app.use(express.static('public'));
之后使用以下代码行
app.use("/lib", express.static(path.join(__dirname,'node_modules')));
然后按如下方式导入您的客户端
<script src='/lib/socket.io/socket.io.js' type='text/javascript'></script>
我一直在尝试让我的客户端连接到我的服务器,但是 chrome 总是打印
GET http://localhost:30653/socket.io/socket.io.js 404 (Not Found)
不知道哪里出了问题...
express 版本是“4.13.4”,socket.io 版本是“1.4.5”
这是我的代码:
app.js
var express = require('express');
var hbs = require('hbs');
var app=express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
io.on('connection',function(socket){
console.log("connected");
socket.emit('open');
});
app.set('port', process.env.PORT || 30653);
app.set('view engine','html');
app.engine('html',hbs.__express);
app.use(express.static('public'));
app.get('/',function(req,res){
res.render('chatroom');
});
app.listen(app.get('port'),function(){
console.log('this server is listening on port:'+app.get('port'));
});
客户:
$(function(){
var socket = io.connect('http://localhost:30653');
socket.on('open',function(){
console.log("open")
});
socket.on('system',function(json){
console.log("system");
});
});
欢迎任何帮助!我将不胜感激!
我认为您的 app.listen(...)
需要 server.listen(...)
因为您创建服务器的方式如下所示:http://socket.io/docs/#using-with-express-3/4。你这样做的方式,socket.io 没有连接到正确的服务器,因此没有为你提供 socket.io.js 文件。
您可以 app.listen()
,但前提是您在此处遵循不同的初始化过程:http://socket.io/docs/#using-with-the-express-framework
您需要在 app.js 行 app.use(express.static('public'));
之后使用以下代码行 app.use("/lib", express.static(path.join(__dirname,'node_modules')));
然后按如下方式导入您的客户端
<script src='/lib/socket.io/socket.io.js' type='text/javascript'></script>