1.基于需要实现一个IM 就记录一下 。

1.将websocket 注册到 nacos 服务上 也是IM 注册到nacos 上  借助rabbitmq 实现集群以及redis 实现记录离线消息具体看代码文字懒得写(里面自己还尝试换了 zookeeper 作为注册中心 仅供学习)IM 和 网关的 目录:

整个逻辑是启动服务将websocket,网关 注册到 nacos  通过访问 网关 去 LB 多台websocket的服务器达到集群 nacos 本身就有基于权重的负载均衡机制。

通过客户端和服务端的长链接进行聊天。网关可以自行发挥 反正是学习为主。

 基于docker 打包 部署 代码 (IM 和 网关一样的部署方式):

FROM java:8

COPY *.jar /usr/local/bin/gateway-0.0.1-SNAPSHOT.jar

COPY /config /usr/local/bin/config

CMD ["--server.port=9011"]

EXPOSE 9011

# ENTRYPOINT 执行项目 app.jar及外部配置文件,多个配置文件逗号隔开
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev", "/usr/local/bin/gateway-0.0.1-SNAPSHOT.jar","--spring.config.location=/usr/local/bin/config/bootstrap.yml"]

代码里面有dockerFile直接用就行了 注意路径

具体的代码有点多 直接上gitup 反正互相学习学习

静态页面在 webapp中

代码 https://github.com/wangwanghui/IM-netty

 网关的也在 对应的仓库里面

需要搭建的环境 rabbitmq+mysql+nacos+netty +docker+websocket

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐