#node.js #socket.io
#node.js #socket.io
Вопрос:
У меня есть приложение NodeJS (которое также обслуживает клиента), и я пытаюсь реализовать связь в реальном времени между клиентом и сервером, поэтому я использую сокет.ввод-вывод для этого.
Я добавил следующий код в свой server.js файл:
const app = express();
const server = http.createServer(app);
realtime.connect(server);
server.listen(3002, () => {
console.log(`Listening on port 3002`)
});
но всякий раз, когда я меняю свой код nodejs, сбой сервера:
Error: listen EADDRINUSE: address already in use :::3002
Как я могу это исправить и избежать перезагрузки кода прослушивания моего сокета.сервер ввода-вывода, когда browsersync перезагружает мое приложение nodejs?
Ответ №1:
Вы можете запустить сервер сокетов на отдельном порту. А также вы можете использовать отдельные функции в качестве промежуточного программного обеспечения для аутентификации.
Вот простой пример
> index.js
import express from 'express';
import Socket from './socket';
const app = express();
const port = process.env.PORT || 3000;
const socketPort = process.env.SOCKET_PORT || 8001;
const io = require('socket.io')(socketPort);
// User Authentication
// app.use(verifyToken);
// Socket Authentication
// io.use(socketTokenVerification);
const socket = new Socket(io);
socket.modelLoaded();
app.listen(port, () => {
log.info(`HTTP server is running 🚀 on port ${port}
Socket service running 🚀 on port ${socketPort}
Process Pid: ${process.pid}`);
});
> socket.js
export default class {
constructor(io) {
this.io = io;
this.connections = {}; // should be updated on connect and disconnect
}
addConnection(socket) {
// your code here
}
removeConnection(socket) {
// your code here
}
socketDisconnect(socket) {
// your code here
}
modelLoaded() {
const { io, connections } = this;
io.on('connection', socket => {
addConnection(socket);
// any code here
});
}
}
Комментарии:
1. Я запускаю его на другом порту. проблема заключается в том, что сервер nodejs перезагружается через browsersync.
2. Вы можете использовать Nodemon для перезагрузки Node.js сервер после внесения изменений в код. npmjs.com/package/nodemon