Я пытаюсь подключить много клиентов socket.io для разных URL-адресов в Node.js, например:
app.get('/:id',function(req,res){
io.of('/'+id).on('connection',function(socket){
socket.emit('hello');
})
});
Это работает, но есть проблема:
Когда браузер обновляет страницу, например http://localhost:3000/xyz, запускается событие socket.emit. два раза.
Если кто-то заходит на страницу http://localhost:3000/xyz 10 раз, то событие срабатывает 10 раз.
Это нехорошо, потому что каждый раз, когда пользователь посещает эту страницу, события сокета будут запускаться n+1 раз.
Что нужно сделать, чтобы я мог прописывать сокеты на разные URL-адреса и при этом не иметь этой аномалии.
Еще одна вещь :
Если я сделаю это:
var sock;
io.of('/'+xyz).on('connection',function(socket){
sock=socket;
})
app.get('/:id',function(req,res){
sock.emit('hello');
})
Если я использую приведенный выше код, сокет не будет успешно сохранен в переменной sock за время. Это означает, что я должен сделать setInterval около 1000 .. так что
sock=socket
линия срабатывает.
Помогите пожалуйста мне.