Nettt框架下的WebSocketServer

最近做了一个项目, 需要不同的客户端通过WebSocket实现即时点赞功能, websocket维持长连接, Netty框架负责处理巨大客户数量的接入, 据说16个核就可以支持百万并发.

研究了一下Netty, 的确挺傻瓜的, 买了两本书:

https://item.jd.com/12070975.html

Netty In Action, 据说是阿里的人翻译的, 挺不错.

https://item.jd.com/11681556.html

这本是中国人自己写的.

思路是, 在负责处理WebScocketFrame的TextWebSocketFrameHandler类里面, 插入一些代码, 将channel先组织成一个List, 因为我希望同一个组织内的终端可以形成组播, 简单来说可以理解成一个独立聊天室, 在这个聊天室里面的人说话, 大家都听得见, 不在这个聊天室的人, 就听不见了. 所以首先这个是一个ArrayList, 然后加上聊天室的ID, 组成一个Map元素, 多个聊天室组成一个Map.

有了这些先组成list,然后组成map的channel, 你想发什么给谁, 就容易很多了.

另外, 测试用的Index.html用的js语言, 直接new了一个WebSocket类, 然后send对应的消息.

好吧, 我承认夜深了, 我累了, 回头再写具体的实现过程吧. 先看代码, ok?

具体的代码实现在:

https://github.com/MontaukLaw/NettyLikeServer

时间: 2024-12-11 02:06:42

Nettt框架下的WebSocketServer的相关文章

php的yii框架下开发环境xampp,vim,xdebug,DBGp的搭建

php的yii框架下开发环境xampp,vim,xdebug,DBGp的搭建 选择Linux桌面环境Deepin2014.1下开发网站的理由很简单,能截图,有搜狗输入法,可以WPS文档记录,终端下复制粘贴很容易,相比ubuntu,fedora死机次数少了,对,就是不用折腾,自带的. 先说vim和DBGp插件. Deepin2014.1简体中文,自带的vim7.4版本,很多配置已经很适合大陆的人使用了,比如Php和Python的调试支持等,不需要重新编译了.可以节省不少步骤.这里提供一个vim的配

caffe框架下目标检测——faster-rcnn实战篇操作

原有模型 1.下载fasrer-rcnn源代码并安装 git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 1)  经常断的话,可以采取两步: git clone https://github.com/rbgirshick/py-faster-rcnn.git 2)  到py-faster-rcnn中,继续下载caffe-faster-rcnn,采取后台跑: git submodule update --in

Net框架下-ORM框架LLBLGen的简介(转载)

Net框架下-ORM框架LLBLGen的简介 http://www.cnblogs.com/huashanlin/archive/2015/02/12/4288522.html 官方网址:http://www.llblgen.com/

基于dubbo框架下的RPC通讯协议性能测试

一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC请求,注册中心分配服务URL并路由到具体服务提供方(Provider),消费者和服务提供方建立网络连接,服务提供方在本地创建连接池对象并提供远程服务,对于长连接类型协议(如dubbo协议)将保持连接,减少握手认证,调用过程中可以避免频繁建立和断开连接导致的性能开销,保持长连接需要有心跳包的发送,所以

springMVC框架下——通用接口之图片上传接口

我所想要的图片上传接口是指服务器端在完成图片上传后,返回一个可访问的图片地址. spring mvc框架下图片上传非常简单,如下 1 @RequestMapping(value="/uploadImg", method=RequestMethod.POST) 2 @ResponseBody 3 public String uploadImg(@RequestParam(value="img")MultipartFile img){ 4 File f = new Fi

在Iframe框架下如何跳转到登录界面

在Iframe框架下跳转到登录界面总会跳到子界面中,类似于下图 试用Respon.Redirect()不行, 用Js函数,但我跳转代码都是写在cs文件中的,用Respose.write(),js函数根本没有执行. 最后看到一文章,在后台用Respon.Redirect(),而在登录界面中加入js,如下代码 <script language="JavaScript" type="text/javascript"> if (window != top) to

nodejs 中koa框架下的微信公众号开发初始篇

最近在搞微信公众号开发,后端采用的是nodejs下的koa框架,初识后端的菜鸟,自己搞难度太大了,网上找了很多文章,采用的中间件大都是express框架下的,不过好在爬了许多坑之后总算看见点曙光了,遂把探索出来的一点东西拿出来分享,毕竟能力有限,拿出来也是希望大神看到了给点建议, 主要用 koa-wechat 处理验证和消息解析 ,用wechat-api来进行按钮组等api操作,刚开始没什么内容,大家随意看看就好, 废话不多说,直接上代码(这是一个route的代码): var koa = req

springMVC框架下JQuery传递并解析Json数据

json作为一种轻量级的数据交换格式,在前后台数据交换中占领着很重要的地位.Json的语法很简单,採用的是键值对表示形式.JSON 能够将 JavaScript 对象中表示的一组数据转换为字符串,然后就能够在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给server端程序,也能够从server端程序传递json格式的字符串给前端并由前端解释.这个字符串是符合json语法的,而json语法又是javascript语法的子集,所以javascript很easy解释

CI框架下的get_instance() 函数

你随便下个CI框架的源码都会看到很多的get_instance() 函数,这个函数是用来获取CI 的全局超级对象,CI 是单例模式的框架,所有全局有一个超级对象.因为只有一个实例,所以无论这个函数使用多少次都不会消耗资源的.一般来说,只有在helper或library中才使用get_instance. 以前我们都是这样用的:$this->load->library('session'); $this只作用在你自己的控制器.模型.视图中,如果你在自定义的类中也想使用CI的函数话,你就可以这样做: