当前位置:坤哥网-kungge-WebSocket学习(二):用 ASP.NET 实现一个简单的聊天室

WebSocket学习(二):用 ASP.NET 实现一个简单的聊天室

2018/3/13 17:06:14 kungge阅读(1152) 评论(0)


这个简单的聊天室是当时学习 WebSocket 做的一个练习,没有时间完善,一个字懒,就把它放出来,但是对于学习 WebSocket 还是有一定作用的。


项目说明


1.服务器定时给群成员推算计时消息/群人数[

使用Timer定时推送消息。

]


2.尝试下断网重连,心跳检测等[

连接成功后,客户端隔一段时间发送一次心跳。

断线之后,非主动下线的情况下每隔一段时间重新连接。

]

      

3.连接后如何获取到之前错过的消息[

暂时未做。

实现思路:所有的消息异步发送给redis异步队列,监控是否有用的用户进入房间,有则将异步队列存储的消息发送给进入房间的人,异步队列中的消息有效期设置一天或者更长。

]


4.想想怎么支持发表情图片[

用的是一个jQuery插件

缺陷:在输入框时没有解析。

实现思路:使用类似富文本框,将表情加入到文本框中立即调用解析js函数进行解析成表情即一个小图片(一个img标签),同时将小图片的替代文本存入标签内,在后台收到消息时取出小图片替代文本同时用该替代文本替换img标签,前端收到消息再次调用解析js函数进行解析。


5.怎么样检测用户正在输入状态[

暂时未做。

群聊获取别的用户正在输入状态没意义。

私聊时思路:监听发送者文本框变化,有变化则发起请求,根据私聊对象找到对应的websocket发送消息给接收者,这个消息是特殊消息不发到聊天窗口里,在其他地方显示如"汤姆正在输入..."。

]


6.显示当前在线用户列表[

房间人数更新时,自动更新用户列表。

]


7.登录选择房间[

根据房间创建不同的Timer,定时发送。

房间内的成员可以群聊和私聊。

]



其他说明:

1.用户模拟数据在用户实体UserModel内产生。房间模拟数据在房间实体ChatRoom内产生。

2.密码在代码中写死"123456"。



v2更新说明:

  1. 进入房间之后可以切换房间。



登录 


登录怎么简单怎么来,这不是重点,没有用到数据库,在后台写死了一些用户,密码默认 123456 。

                _userList.Add(new UserModel("tom", "汤姆", "男"));
                _userList.Add(new UserModel("jack", "杰克", "男"));
                _userList.Add(new UserModel("qiaofeng", "乔峰", "男"));
                _userList.Add(new UserModel("dfbb", "东方不败", "女"));
                _userList.Add(new UserModel("xln", "小龙女", "女"));


bfdc0b3b-cb6e-4149-a37d-fbd5d30431cf.png


聊天


选择一个房间,登录进去就可以对房间内的人聊天,下面登录了两个人,分别是 tom 和 jack。支持群聊和私聊。


当只有 tom 一个人:

38056157-2b18-481f-b530-d8a05df16c05.png


现在用另外一个浏览器登录 jack ,开始聊天,可以发送私聊,当前窗口是 汤姆 :

4e40765e-1d44-4d94-94a5-2bb990444053.png


41333d57-b140-483a-ad85-13ad7c753861.png


当前窗口是 杰克的:cb10c508-e077-469e-9ffd-7ca84f198c82.png


可退出房间,选择切换房间。


标签: WebSocket 聊天室
分类: Socket

发表评论 没有账号,注册评论