怎么使用netty写一个http长连接服务器

 我来答
小黑哥哥SN
2013-08-24 · TA获得超过212个赞
知道小有建树答主
回答量:121
采纳率:50%
帮助的人:56.2万
展开全部
我又看了下play的源代码,play自定义handler里的messageRecived: public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception{ Invoker.invoke(new NettyInvokation(request, response, ctx, nettyRequest, e));}messageReceived结束后,worker线程就即将(还要去做一些系统预定的收尾工作)脱离这个request,也就是说,这个request不再会占用worker了。但是 Invoker.invoke这个方法会在play框架内部的线程池里提交一个任务来继续处理request,完成真正的业务逻辑。 上面是play的做法,简单总结一下就是可以通过在messageReceived中启动一个新的线程或者向线程池提交任务的方式来完成request的业务逻辑处理部分,这样不但可以保持长连接不关闭,而且不会占用netty的worker进程。当处理业务逻辑完成后,再通过回调函数,把结果用netty提供的HttpResponse返回到客户端 请求-netty master-netty worker-(这时worker已经可以去处理其他的请求了)自己启动一个新的线程-netty response 我没测试,等有时间再看看吧
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式