У меня есть простое приложение, которое использует экспресс для обслуживания статической страницы, которая создает соединение socketio.Проблема в том, что сервер перестает отвечать через минуту или две.Это код:
server.js
const path = require('path');
const http = require('http');
const express = require('express');
const socketIO = require('socket.io');
const publicPath = path.join(__dirname, './public');
const port = 3000;
let app = express();
let server = http.createServer(app);
var io = socketIO(server);
app.get(`/`, (req, res) => {
res.sendFile(publicPath + '/index.html');
});
server.listen(port, () => {
console.log('listening...');
})
io.on('connection', (socket) => {
socket.on('test', (data) => {
console.log(data);
});
});
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
</head>
<body class="centered">
<center><h1>This is a test</h1></center>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('connect', () => {
socket.emit('test', 'this is some data');
});
</script>
</body>
</html>
Package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.4",
"socket.io": "^2.1.1"
}
}
Конечно, нет ошибок на сервере или клиенте.Если я уберу строку var socket = io()
, приложение будет работать гладко.