저는 node.js + socket.io를 사용하여 실시간 뉴스 피드와 같은 간단한 시스템을 구축하고 있습니다.node.js + socket.io는 특정 클라이언트가 아닌 서버에서 브로드 캐스팅됩니까?
"읽기 전용"시스템이므로 클라이언트는 데이터를 연결하고 수신하지만 클라이언트는 실제로 자신의 데이터를 보내지 않습니다. 서버는 모든 클라이언트에 보낼 메시지를 생성하고 클라이언트는 메시지를 생성하지 않습니다. 아직 나는 방송 할 필요가있다.
documentation for socket.io's broadcast (페이지의 끝)
그래서 나는 현재 해당 소켓 이 새로운 클라이언트가 새로운 데이터 및 다른 모든 클라이언트를 얻을 수 있도록 그 소켓에단순히
emit
및send
메서드 호출에broadcast
플래그를 추가, 브로드 캐스트하려면 말한다. 방송이란 시작하는 소켓을 제외한 모든 사람들에게 메시지를 보내는 것을 의미합니다.
broadcast.emit()
에 다음 변수에,
emit()
를 연결하는 가장 최근의 클라이언트를 캡처 . 하지만 여기서 클라이언트의 역할이 socket.io가 이미 지원한다고 생각한 것에 대한 해결 방법이라고 생각합니다.
서버가 시작한 이벤트를 기반으로 모든 클라이언트에 데이터를 보내는 방법이 있습니까??
내 현재의 접근 방식은 대략 다음과 같습니다
var socket;
io.sockets.on("connection", function (s) {
socket = s;
});
/* bunch of real logic, yadda yadda ... */
myServerSideNewsFeed.onNewEntry(function (msg) {
socket.emit("msg", { "msg" : msg });
socket.broadcast.emit("msg", { "msg" : msg });
});
는 기본적으로 데이터가 클라이언트로 전송이 필요하게 이벤트가 모든 서버 측이 아닌 클라이언트 측입니다.
나는'io.sockets.emit'이 정의 된 함수가 아니라는 오류가 발생했습니다. – d11wtq
그것은 나를 위해 작동합니다 : P, 어떤 버전의 소켓 io를 사용하고 있습니까 – user482594
흠, 실제로'io.sockets.broadcast.emit()'을 시도한 것처럼 보입니다. – d11wtq