Skip to content

timelessmemory/WebsocketChat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebsocketChat

INTRODUCTION

version1.0 多人单聊天室版 切换至one-to-many-one-chatroom分支

version2.0 多人多聊天室版 切换至one-to-many-multi-chatroom分支

version3.0 一对一聊天版 切换至one-to-one-chatroom分支

该分支是终极版(尚未实现)

  1. 对于WebsocketServer对象的存储改为对Websocket中的Session对象的存储,并且不再使用Map存储。因为计划加入分布式设计,为了多服务器之间共享Session采取将Session存入Redis的方案。
  2. 为了节省内存,聊天成员也存入Redis
  3. 加入ChatRoomId隔离出多个聊天室

Problem

在存储session至Radis时出现问题,Session没有实现序列化接口无法序列化,因为无法存入redis。
目前解决方案思路:
多个服务器中的Session实例还是存储在Map中,如何实现session共享:采用发布订阅。当某个服务器节点收到用户请求,先查看本服务器有没有目标用户的session,如果没有就发布消息到其它服务器。其它服务器订阅消息查看有没有目标用户的session,有就使用session发送消息。
但是这种方案比较繁琐,实现可以实现,暂时的方案只有这个。

result

About

多人/单人(多)聊天室, Websocket, 分布式, Spring + Redis

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published