netty虽然可以实现聊天室的功能。但完整的做下来,还是要自己去封装很多东西,尤其是客户端和服务器通信的数据格式,服务端消息派发器的设计。这一点就比spring 的websocket over stomp的topic(主题模型)差远了,但是netty毕竟是NIO拥有更好的性能,以及给程序员更多的一个可操作空间。

具体效果

支持1v1聊天和多人聊天,自己创建群聊,具体演示地址点我

登陆界面:
密码不用输入

然后是主面板:

加入了Jquery的toastr弹窗插件,有信息到来时会就行提示:

然后是非常简陋的消息面板:

支持群聊创建:

用户可以选择进入群聊或则拒绝:

nginx配置

server {listen 80;server_name www.siwash.xyz;return 301 https://$server_name$request_uri;}upstream websocket {server localhost:1225;}
server {listen     443;server_name  www.siwash.xyz;#rewrite ^(.*) http://$host$1 permanent;ssl on;ssl_certificate cert.crt;ssl_certificate_key cert.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置ssl_prefer_server_ciphers on;#charset koi8-r;#access_log  logs/host.access.log  main;location /meetRecord{#小程序proxy_pass http://127.0.0.1:18011/;}#在线聊天location ~ ^/netty/IM/{           #即时聊天proxy_pass http://127.0.0.1:8112/$request_uri;                }location ~ ^/ws/(.*){proxy_pass  http://webSocket/$1?$args;proxy_read_timeout 600s;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

注意websocket那个location的写法,关键点有两个:

  1. proxy_set_header和proxy_set_header Connection表明支持协议升级成websocket。这里是将wss通过nginx反向代理成ws,虽然前端是wss开头,后台仍然只是ws的服务器
  2. 之前通过/ws/websocket去精准匹配一直报404,最后换成正则匹配就没问题了
    其中~ ^/ws/(.*) 种~表示区分大小写的正则匹配,^代表匹配以/ws/(.*)开头,而(.*)相当于一个占位符,和proxy_pass种$1的内容是对应的 比如:wss://xxxx/ws/websocket?user被代理后就是http://webSocket/websocket?user,而websocket在upstream里只定义了一个ip和端口为localhost:1225,于是完整的真实地址相当于是http://localhost:1225/websocket?user

nginx还有很多神奇的地方有待进一步的学习,代码下载地址:https://github.com/Siwash/NioWebsocket

基于netty的在线聊天室,支持群聊和私聊——【一】基本功能介绍和nginx配置相关推荐

  1. springboot+websocket构建在线聊天室(群聊+单聊)

    系列导读: 1.springboot+websocket构建在线聊天室(群聊+单聊) 2.Spring Boot WebSocket:单聊(实现思路) 3.Websocket Stomp+Rabbit ...

  2. socket聊天室实现-群聊,私聊,好友列表,完整版

    效果图 登录.好友上线,下线均提示. 点击好友列表所有人,发送消息,既为群聊 点击好友列表,好友名字,既为选中此好友进行私聊 服务器端代码 ChatRoomServer package sram.se ...

  3. java netty聊天室_netty实现消息中心(二)基于netty搭建一个聊天室

    前言 上篇博文(netty实现消息中心(一)思路整理 )大概说了下netty websocket消息中心的设计思路,这篇文章主要说说简化版的netty聊天室代码实现,支持群聊和点对点聊天. 此demo ...

  4. 从头搭建一个基于 Python 的在线聊天室

    本场 Chat,是基于 Python + Redis + Flask 来搭建一个简单易用的在线聊天室.完全从零开始,一步一步完成整个项目. 主要分享内容: Flask 项目结构 Python Redi ...

  5. 【php】基于Xajax的在线聊天室、直播间

    关于php的Xajax到底是什么,这里不再介绍,详情可以看我<[php]Xajax Helloworld>(点击打开链接)与<[php]注册系统和使用Xajax即时验证用户名是否被占 ...

  6. Java网络编程,使用Java实现UDP和TCP网络通信协议,以及基于UDP的在线聊天室。

    文章目录 前言 一.网络编程概念 1.网络 2. 网络编程的目的 3.想要达到这个效果需要什么 4.网络分层 二.网络编程Java类 1.IP地址:InetAddress 2.端口 3.TCP连接 3 ...

  7. 嘿从零开始基于SpringBoot 打造在线聊天室(4.4W字最长博文)

    文章目录 前言 效果 主页面 消息提示 聊天页面 登录注册 前端 项目构建 依赖 项目结构 登录注册 验证码部分 登录页面 注册页面 主页面 流程 websocket loadmessage 消息发送 ...

  8. .NET Core 实现基于Websocket的在线聊天室

    什么是Websocket 我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯,但是在web体系是用不了socket通讯技术的,因为http被设计成无状态,每次跟服务器通讯完成后 ...

  9. websocket一直无法链接_.NET Core 实现基于Websocket的在线聊天室

    什么是Websocket 我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯,但是在web体系是用不了socket通讯技术的,因为http被设计成无状态,每次跟服务器通讯完成后 ...

最新文章

  1. Python Web实战:Python+Django+MySQL实现基于Web版的增删改查
  2. ABP理论学习之多租户
  3. BERT入门讲解(内附源码)【自然语言处理NLP-100例】
  4. 不能卸载java_无法卸载注入的DLL
  5. 程序员,也需要学习分析与设计的方法?! (2)
  6. 剑指Offer_47_求1+2+3+...+n
  7. codevs 4189 字典
  8. P3554 LUK-Triumphal arch 解题报告
  9. 关于以太网没有有效的ip配置问题解决方法
  10. AW笔记本升级SSD,外接双屏中的一些注意事项
  11. 朴素贝叶斯(西瓜数据集分类,社区恶意留言分类,垃圾邮件分类,新浪新闻分类),AODE分类器 代码实现
  12. Vue首屏加载速度优化,提升80%以上
  13. Spring Security详细讲解(JWT+SpringSecurity登入案例)
  14. Ubuntu添加和设置开机自动启动程序的方法
  15. ps中常用模糊的区别
  16. 岚图卖不动,到底谁的锅?
  17. 自学数据结构_五月十日_综述
  18. 利用博客提交作业的程序设计课程实践模式
  19. 国内云服务器,服务商优缺点分析
  20. REDIS缓存集群介绍

热门文章

  1. linux 挂载设备的目录,Linux下使用mount来挂载设备到目录
  2. qcy蓝牙耳机怎么串联_qcy蓝牙耳机怎么换去连接另一部手?
  3. 编写一个程序,输入一组字符串,将字符串中的小写字母转换为大写字母(其它字符不变)并输出。
  4. C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试
  5. 学习要买好书(作者:梦幻尤里)
  6. linux 特殊符号总结
  7. 苹果手机喇叭灰尘清理_手机清理灰尘
  8. 数据库--1166错误
  9. LAL v0.32.0发布,更好的支持纯视频流
  10. 3489万!浪潮中标福州市行政(市民)服务中心综合信息化提升项目