2012-01-05 1 views
1

현재 모든 브라우저 양식의 Java 클라이언트 (소켓 io socket.io-netty)에 메시지를 보내려고합니다. 현재는 하나의 브라우저에만 메시지를 보내고 있습니다. 시간. snippent 다음입니다 :netty 용 Java 기반 소켓 io 클라이언트를 사용하여 모든 브라우저에 메시지 보내기

public class IOClientListener implements INSIOHandler { 
    private INSIOClient ioClient=null; 
    private final static Logger log=LoggerFactory.getLogger(IOClientListener.class); 

    @Override 
    public void OnConnect(INSIOClient client) { 
     System.out.println("A user connected :: " + client.getSessionID()); 
       client.send("Hey you are connected to myhope.com"); 

    } 

    @Override 
    public void OnDisconnect(INSIOClient client) { 
     System.out.println("A user disconnected :: " + client.getSessionID() + " :: hope it was fun"); 
    } 

    @Override 
    public void OnMessage(INSIOClient client, String message) { 
     System.out.println("A message received:: " + message + " :: hope it was fun"); 
    } 

    @Override 
    public void OnShutdown() { 
    } 

    public INSIOClient getIOClient(){ 
     return this.ioClient; 
    } 
} 

내가이 클라이언트를 사용하여 메시지를 방송하는 방법을 알고 싶어요. 사전 자세한 내용에 대한

답변

1
이 목적

.... 
static ChannelGroup allClientChannels = new DefaultChannelGroup(); 


@Override 
public void OnConnect(INSIOClient client) { 
    System.out.println("A user connected :: " + client.getSessionID()); 
      client.send("Hey you are connected to myhope.com"); 

    allClientChannels.add(client.getCTX().getChannel()); 
} 


@Override 
public void OnDisconnect(INSIOClient client) { 
    System.out.println("A user disconnected :: " + client.getSessionID() + " :: hope it was fun"); 
    allClientChannels.remove(client.getCTX().getChannel()); 

} 

에 대한 인 Netty ChannelGroup을 사용할 수 있습니다

...

//when you want to send a broadcase message 

allClientChannels.write(yourMessage); 

감사, 나는이 시도하고 한 ChannelGroup API Doc

+0

에 봐 allClients.write (message)를 작성했지만 "IllegalArgumentException : 지원되지 않는 메시지 유형 : ..."이 표시됩니다. 어떻게 메시지를 보냅니 까? – Ivan

+0

메시지가 채널 버퍼 여야합니다. socket.io에 익숙하지 않습니다. Netty와 같은 처리기의 파이프 라인을 지원할 수도 있습니다. 따라서 광범위한 캐스트 처리기 후에 인코더 처리기를 갖고 인코딩 후 메시지를 보내야합니다. 채널 버퍼 객체에 전달합니다. –