मैं कस्टम प्रोटोकॉल को संभालने के लिए नेटटी का उपयोग कर क्लाइंट लिख रहा हूं। मैंने एक हैंडलर परिभाषित किया है जो SimpleChannelInboundHandler को बढ़ाता है जो संदेश भेजने और प्राप्त करने दोनों को संभालता है।

public  class ClientHandler extends SimpleChannelInboundHandler {
    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, Object o) throws Exception {
        log.info("Client received: " + ((ByteBuf)o).toString(CharsetUtil.UTF_8));
        System.out.println("Client received: " + ((ByteBuf)o).toString(CharsetUtil.UTF_8));
    }

    @Override
    public void channelActive(ChannelHandlerContext channelHandlerContext){
        log.info("Client sent: $"+ new MessageRequest().toString() +"$");
        channelHandlerContext.writeAndFlush(Unpooled.copiedBuffer((new MessageRequest().toString()), CharsetUtil.UTF_8));
    }


    @Override
    public void exceptionCaught(ChannelHandlerContext channelHandlerContext, Throwable cause){
        cause.printStackTrace();
        channelHandlerContext.close();
    }
}

यह हैंडलर कंसोल की प्रतिक्रिया को प्रिंट करने में सक्षम है। लेकिन चूंकि मैं एक क्लाइंट लिख रहा हूं जिसका उपयोग किसी अन्य सेवा द्वारा किया जाएगा, मुझे उस सेवा को प्रतिक्रिया भेजनी होगी जो मेरे क्लाइंट को कॉल कर रही है।

कृपया कॉलिंग सेवा को प्राप्त प्रतिक्रिया भेजने में मेरी सहायता करें।

0
Sarath Subu 17 अक्टूबर 2018, 18:03

1 उत्तर

सबसे बढ़िया उत्तर

आप अपनी सुनने की सेवा के संदर्भ को अपनी ClientHandler कक्षा में संग्रहीत कर सकते हैं और सेवा वर्ग की setMessage विधि को कॉल करके इसे अपने हैंडलर की channelRead0 विधि से संदेश दे सकते हैं।

ऑब्जर्वर पैटर्न का उपयोग करने के लिए एक बेहतर तरीका होगा

0
Riyafa Abdul Hameed 18 अक्टूबर 2018, 02:12