NodeJs express.use 扰乱了 socket.io 引用
NodeJs express.use disturbs the socket.io reference
我是 nodejs 的新手 socket.io。
我只是想检测连接到快速服务器的套接字。
当我不使用快速服务器时,它对我来说工作正常。
然后出于某种原因,我使用了 express 并希望所有内容都是静态的,所以我将这一行添加到服务器文件中。
app.use(express.static(__dirname));
上面一行扰乱了我的 client.html 文件。下面是我的 client.html 的代码。我使用开发人员控制台对其进行调试,发现包含“/socket.io/socket.io.js”的脚本 src 无效。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="/socket.io/socket.io.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="/css/style.css"/>
<title>Untitled Document</title>
<script>
var socket = io.connect();
socket.on('connect',function(){
console.log("socket.io working");
});
</script>
</head>
</html>
我认为我缺少一些概念或东西。我已经尝试了很长时间,但可以找出问题所在。请指导。我自己试试。
更多信息:这是我的应用程序目录结构。
-MyChatRoom
--ChatServer.js
--html
----client.html
--css
----style.css
--images
--node_modules
----socket.io
----express
已编辑:
为了更好地理解这里是我的ChatServer.js代码
fs = require('fs');
url = require('url');
express = require('express');
app = express();
server = require('http').createServer(app);
socketio = require('socket.io')(server);
//The root and all subs are made static
app.use(express.static(__dirname));
app.get('/',function(request,response){
response.sendFile(__dirname + "/html/index.html");
});
app.listen(3000);
var connectedUsers = 0;
socketio.on('connection',function(socket){
connectedUsers++;
console.log('client connected');
});
app.listen(3000);
应该是
server.listen(3000);
您需要在 http 模块而不是 express 模块上收听。
Express 在您实例化时通过 http 模块传递。 Socket.io 使用 http 模块,这就是为什么你需要监听它才能正常工作。
我是 nodejs 的新手 socket.io。 我只是想检测连接到快速服务器的套接字。 当我不使用快速服务器时,它对我来说工作正常。 然后出于某种原因,我使用了 express 并希望所有内容都是静态的,所以我将这一行添加到服务器文件中。
app.use(express.static(__dirname));
上面一行扰乱了我的 client.html 文件。下面是我的 client.html 的代码。我使用开发人员控制台对其进行调试,发现包含“/socket.io/socket.io.js”的脚本 src 无效。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="/socket.io/socket.io.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="/css/style.css"/>
<title>Untitled Document</title>
<script>
var socket = io.connect();
socket.on('connect',function(){
console.log("socket.io working");
});
</script>
</head>
</html>
我认为我缺少一些概念或东西。我已经尝试了很长时间,但可以找出问题所在。请指导。我自己试试。
更多信息:这是我的应用程序目录结构。
-MyChatRoom
--ChatServer.js
--html
----client.html
--css
----style.css
--images
--node_modules
----socket.io
----express
已编辑: 为了更好地理解这里是我的ChatServer.js代码
fs = require('fs');
url = require('url');
express = require('express');
app = express();
server = require('http').createServer(app);
socketio = require('socket.io')(server);
//The root and all subs are made static
app.use(express.static(__dirname));
app.get('/',function(request,response){
response.sendFile(__dirname + "/html/index.html");
});
app.listen(3000);
var connectedUsers = 0;
socketio.on('connection',function(socket){
connectedUsers++;
console.log('client connected');
});
app.listen(3000);
应该是
server.listen(3000);
您需要在 http 模块而不是 express 模块上收听。
Express 在您实例化时通过 http 模块传递。 Socket.io 使用 http 模块,这就是为什么你需要监听它才能正常工作。