سلام و خسته نباشید
من دارم یه برنامه تحت وب با node.js مینویسم که با استفاده از سوکت اطلاعات کاربرها رو نمایش میدم به ادمین
حالا مشکلی که دارم اینه که وقتی یه کاربر جدید میاد وارد برنامه من میشه و به سوکت متصل میشه کاربر قبلی که به سوکت وصل بوده ارتباطش با سوکت قطع میشه و دیگه اطلاعات رو از طریق سوکت دریافت نمیکنه. در حالی که من میخوام هر تعداد کاربر که به سوکت وصل میشن بدون مشکل به شکل هم زمان بتوانند اطلاعات رو دریافت کنند
کد های برنامه مرتبط با کارکرد سوکت
کد سمت سرور فایل app.js
const express = require('express');
const app = express();
const http = require('http');
// require config file
global.config = require('./modules/config');
let port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
const server = http.createServer(app);
/**
* START: call socket file
*/
const io = require('socket.io')(server);
require(`${config.path.sockets}/Socket-v1`)(io);
/**
* END: call socket file
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
کد سمت سرور فایل Socket-v1.js که کدهای سوکتم درش قرار داره
const User = require(`${config.path.models}/User`);
module.exports = function (io) {
const getUsersDataAndEmit = async io => {
try {
User.find({}).exec((err, docs) => {
io.emit("getUsersData", docs);
});
} catch (error) {
console.error(`Error: ${error.code}`);
}
};
let dataInterval
io.sockets.on("connection", function (socket) {
console.log('user connected');
socket.on('getUsersData', () => {
if (dataInterval) {
clearInterval(dataInterval);
}
dataInterval = setInterval(() => getUsersDataAndEmit(socket), 10000);
})
socket.on('disconnect', () => {
console.log('user disconnected');
});
}
};
کد سمت کاربر
<script src="/socket.io/socket.io.js"></script>
let socket = io();
socket.emit('getUsersData');
socket.on('getUsersData', (data) => {
showUsersData(data)
});
به سعید نوروزی کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟