Jaka jest różnica między tymi dwoma?socket.emit() vs. socket.send()
Zauważyłem, że jeśli zmieniłem z socket.emit
na socket.send
w programie roboczym, serwer nie odebrał wiadomości, chociaż nie rozumiem dlaczego.
Zauważyłem również, że w moim programie, jeśli zmieniłem z socket.emit
na socket.send
, serwer odbiera wiadomość, ale wydaje się, że otrzymuje ją wiele razy. Kiedy używam console.log()
, aby zobaczyć, co otrzymał serwer, pokazuje coś innego niż kiedy używam socket.emit
.
Dlaczego to zachowanie? Skąd wiadomo, kiedy należy używać socket.emit
lub socket.send
?
To nie wydaje się wielką różnicą. Widzi, że socket.on() może zrobić wszystko, co może zrobić socket.on(). Dlaczego musieli wykonać tę funkcję? –
Nie wiem, sprawdziłem kod źródłowy i są prawie takie same (https://github.com/LearnBoost/socket.io/blob/master/lib/socket.js#L318). Może to historyczne i tylko z myślą o kompatybilności wstecznej. – Charles
Tworzenie przez socket.io funkcji emit() robi coś innego niż to, co emituje funkcja EventEmitter(), czyż nie? Jest to protokół na szczycie surowych pseudosockets, które wychodzą jako nazwane zdarzenia po drugiej stronie, zamiast nieprzetworzonych wiadomości. Pozwala używać jednego gniazda dla wielu strumieni, w pewnym sensie, zwielokrotniając je. – aredridel