Я новичок в nodejs и socket.io. Я просто намерен обнаружить сокет, подключенный к экспресс-серверу. Он работал отлично для меня, когда я не использовал экспресс-сервер. Тогда по какой-то причине я использовал выражение и хотел, чтобы все было статическим, поэтому я добавил эту строку в файл сервера.NodeJs express.use беспокоит ссылку socket.io
app.use(express.static(__dirname));
Вышеупомянутая строка нарушает мой файл client.html. Ниже приведен код для моего client.html. Я отлаживал его с помощью консоли разработчика и обнаружил, что сценарий src, содержащий «/socket.io/socket.io.js», недействителен.
<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');
});
Вы также можете разместить свой код ChatServer.js. Необходимо увидеть, какой узел пытается запустить тоже. Кроме того, размещение html/css в общей папке и назначение этого статическому будет лучше начать. 'app.use (express.static (__ dirname + '/ public'));' – haxtbh
hey haxtbh Я отредактировал вопрос и добавил код ChatServer.js для вашей легкости –
Пожалуйста, оставьте переменную connectedUsers. Он больше не используется. –