Asp.NetMvc基于Fleck开发的多人网页版即时聊天室第三皇族DisSun

1、Fleck这个是实现websocket一个比较简单第三方组件,它不需要安装额外的容器。本身也就几个接口可供调用。

2、项目是基于.netframework4.7.2,在vs2019上开发的,没试过在低版本上运行。但是代码上没怎么用到新特性,所以估计是可以被低版本使用的。

3、这个项目并不是真实项目,也就是玩一下,但是对熟悉Fleck或者了解及时聊天,应该有一丁点的启发作用。

1、最简单、最常用的调用方法:(ws://172.10.3.4:8111改成您的服务器本地IP和端口)

//控制台代码varserver=newWebSocketServer("ws://172.10.3.4:8111");server.Start(socket=>{socket.OnOpen=()=>Console.WriteLine("产生连接处理");socket.OnClose=()=>Console.WriteLine("连接断开处理");socket.OnMessage=(message)=>{//1、此方法用于接收客户端发送来的消息//2、可以做一些自己的操作,例如存入数据库//3、为了响应客户端,一般会使用下面的send函数,返回响应结果。socket.Send(message);}});2、Fleck本身只负责帮你单线联系。也就是客户端A和服务器建立连接后,会产生一个IWebSocketConnection,也就是上面代码中socket变量的类型,它包含了接收方法、发送方法,但是都仅限于单一连接内。至于客户端A想发送消息给客户端B、C、D亦或者想群发,不好意思Fleck本身不Care。。。当然了那并不是这个功能就不能实现了,只是要开发者自己去把每一个IWebSocketConnection存储起来,并管理他们的生存周期,通过自己的代码去实现客户端A给B发信息或者群发。

三、聊天室源码位置

四、核心代码说明。

1、IWebSocketHelper接口。因为一开始,我是想用多个插件来实现聊天室,所以想用一个接口来做行为封装。结果完成了Fleck之后,发现其他的操作模式都不太相同,很难封装就放弃了,但是保留这个接口,是为了体现扩展性。

///

///所有调用WebSocket的帮助类必须遵从的协议///publicinterfaceIWebSocketHelper{//////websocket连通后触发事件///eventSwitchEventHandlerWsOpenEventHandler;//////websocket连接关闭后触发事件///eventSwitchEventHandlerWsCloseEventHandler;//////websocket监听到消息后触发事件///eventListenEventHandlerWsListenEventHandler;//////websocket响应处理事件///eventResponseTextEventHandlerWsResponseTextEventHandler;//////聊天室在线人数///intPlayerCount{get;set;}//////websocket初始化///voidWebSocketInit();//////向全员发送信息//////voidSendMessageToAll(WebSocketMessagewsocketMsg);//////向自己发送信息//////voidSendMessageToMe(WebSocketMessagewsocketMsg);}接口中用到了4个委托事件,这里稍微简单的复习一下委托和事件。

①委托从使用形式来说,是指我们可以把一个函数作为参数进行传递,例如我们在解一道数学题,条件和要求都是一样的,但是求解的过程可以多种多样,通过委托就可以在不改变主体程序的同时,把不同的求解过程,封装到不同的函数中,然后把函数作为参数传入主体程序。

②委托从模式的角度来说,是在实现观察者模式。订阅者\观察者告诉发布者\主题,如果发生了某一特定事情该怎么处理,“怎么处理”的过程就是委托方法的内容

③事件其实就是一个委托,都说事件是一个特殊委托,特殊在哪里,特殊在它对委托增加了约束,让你不能毫无顾忌的使用委托,这是为了保证封装性。

④上面的4个事件,其实我可以直接换成4个委托属性,对程序运行不会有太大影响。但是为什么要使用事件,还是第三点的封装性。事件本来的用意,是达到特定条件后让发布者自己来触发委托方法的执行,但是如果使用委托属性,订阅者本身就可以进行调用,封装性就很差。

⑤上面的4个事件,分别是订阅者告诉Fleck中心,新长连接接通怎么办、长连接断开怎么办、客户端发来消息怎么办、要返回客户端的消息怎么转换。

2、Fleck类的实现。Fleck实现了IWebSocketHelper接口,这是这个项目的核心代码。

②前面说过,Fleck只负责单线联系,每一个连接都是一个IWebSocketConnection,所以我需要把IdentityMd5和IWebSocketConnection存起来,方便索引调用。

③socket.OnMessage中,socketListHs是存储IWebSocketConnection的集合,每次有消息发来,如果判断是新的IdentityMd5就会存起来。

④socket.OnClose中,如果有连接断开了,IWebSocketConnection就会为null,所以遍历集合,然后把值为null剔除就能保持socketListHs集合的有效性

⑥socket.OnOpen、socket.OnClose、socket.OnMessage都是Fleck自行触发的事件,前面一开始我们介绍过了,例如OnOpen中,如果我们需要当建立新连接时记录日志,我们就可以对WsOpenEventHandler赋值(本项目在Global.asax的Application_Start中用lambda赋值),如下:

varsocket;varwebsocketInit=function(wsPath){if(typeof(WebSocket)==="undefined"){socket=null;console.log("浏览器不支持websocket");}else{//实例化socketsocket=newWebSocket(wsPath);//监听socket连接socket.onopen=wsOnOpen;//监听socket关闭socket.onclose=wsOnClose;//监听socket错误信息socket.onerror=wsOnError;//监听socket消息socket.onmessage=wsOnMessage;}}varwsOnOpen=function(){console.log("已经成功连接");varsMsg="";varsendMsg="{\"IdentityMd5\":\""+identityMd5+"\",\"SMsg\":\"\",\"ImgIndex\":\""+imgIndex+"\",\"IsConnSign\":\"true\"}";socket.send(sendMsg);}varwsOnClose=function(){console.log("已经关闭连接");}varwsOnError=function(evt){console.log("异常:"+evt);}varwsSend=function(sMsg){if(socket==null||sMsg=="")returnfalse;console.log("消息成功发出");socket.send(sMsg);}①WebSocket是浏览器内置的一个类型,现在一般的浏览器都支持,但是还是typeof(WebSocket)来做一下判断。

②然后在启动时加载即可(ws://14.215.177.1:8111改成您的服务器公网IP和端口)。

$(function(){websocketInit("ws://14.215.177.1:8111");});

**********End*****************

上面这些也只是部分代码,需要可运行代码,请去github下载源码。

疫情当前,公司发展不顺,旧项目停摆,新项目需求不明。像当前这样的企业破产潮,我是比较紧张的,毕竟不是小年轻,技术又不是特别过硬,不上不下的焦虑的很。但是也明白,行动起来,每天让自己靠近目标一点点,是解决焦虑的不二法门。

能写一些博客,就写一些博客吧,我也不确定写这个对我自己有什么帮助,对读者都多大的帮助,就当备忘录吧。

THE END
1.聊天室软件哪个好?免费视频聊天室聊天室软件下载大全聊天室软件哪个好?好不好用了才知道。目前,市面上已推出了很多款聊天室,如:康福聊天室、uc聊天室、新浪聊天室、聊聊语音聊天室等,为了方便大家下载,绿色资源网小编精心了整理,聚合了最新最热的聊天室软件。在聊天室中,你可以结交到很多志同道合的朋友,还可以充分展示自己的才艺,娱乐交友两不误,绝对的交友神器!有http://www.downcc.com/k/liaotianshi/
2.视频聊天软件哪个好视频聊天软件排行视频聊天软件哪个好?视频聊天软件排行,视频聊天软件推荐。视频聊天工具是现在不可缺少一项工具,大家可以在聊天室中观看精彩直播、点播的视频节目,并可召开多方视频会议,进行视频教学,与五湖四海的亲朋好友视频交流,视频聊天不仅能看到对方还能听到声音,比文字交流更有效率。 本页面整理了时下最流行并且最火最好用的视频聊https://www.qqtn.com/qqkey/spltrj/
3.免费聊天交友约会哪个软件好2024聊天交友约会不花钱的软免费聊天交友约会哪个软件好?让广大用户都可以免费体验的聊天交友软件,大家可以通过app上的聊天进行约会,而且聊天是不需要收取任何费用的,聊天平台上有着很多优质的用户,让你可以找到很多符合你兴趣的人,你在这里遇到很多志同道合的朋友,让你们轻松畅谈话题,感兴趣的用户不要错过啦。https://www.doyo.cn/zhuanti/ltjyyh/
4.GettingReal(推荐)Campfire提供了业务模式下的简单群聊方式。实时持久的群聊对于业务来说非常重要。传统的实时聊天对于快速的一对一模式很有效。但是对于3个或者更多的人同时聊天来说异常痛苦。Campfire解决了此问题和其他相关问题。 Backpack是一种替代那些玄乎,复杂,“通过25个步骤管理人生”之类的个人信息管理系统的产品。Backpack在页面https://blog.csdn.net/iteye_11067/article/details/81931305
5.十大定位软件手机定位软件哪个好手机查位置软件有哪些→MAIGOO十大手机查位置软件之一的跟屁虫,由摩安信息技术(北京)有限公司推出,具有实时定位家人位置(防止儿童/青少年/老人走失)、到家/到校自动提醒(该软件一大特色功能,用户可以自行划定电子围栏区域,进出区域均有实时提醒)、视力保护(超过半小时自动提醒)、手机软件时长统计(青少年管制,详细列出每个APP使用时长)、家庭聊天室五大https://www.maigoo.com/top/419705.html
6.林肯冒险家换哪个机油好题 聊天室哪个好 摘 要说哪个聊天室好得看您的具体需求。像微信它可是国内最大社交平台之一聊天功能强大稳定月活账户数约 11.51 亿呢。文字、语音、视频聊天都很顺畅能多人同时在线聊小程序也涵盖生活各方面。社交功能更是丰富朋友圈能分享生活公众号有要说哪个聊天室好得看您的具体需求。像微信它可是国内最大社https://m.pcauto.com.cn/baike/638145/1243154/
7.语音聊天室哪个好腾讯云开发者社区语音聊天室哪个好 语音聊天室是一种基于互联网的实时语音通信工具,用户可以通过语音聊天室与其他用户进行语音交流。以下是对语音聊天室的完善和全面的答案: 概念: 语音聊天室是一种在线的语音通信平台,通过互联网实现用户之间的实时语音交流。用户可以通过加入聊天室与其他用户进行语音对话,实现远程沟通和交流。https://cloud.tencent.com/developer/information/%E8%AF%AD%E9%9F%B3%E8%81%8A%E5%A4%A9%E5%AE%A4%E5%93%AA%E4%B8%AA%E5%A5%BD
8.午夜聊天室回放丨好好生活,慢慢相遇免费在线阅读收听下载【直播回听】午夜聊天室 43 2021-06 3 【直播回听】好好生活,慢慢相遇 45 2021-04 4 【直播回听】好好生活,慢慢相遇 55 2021-04 5 【直播回听】好好生活,慢慢相遇 32 2021-04 6 【直播回听】睡前聊一聊 27 2021-02 7 【直播回听】不做午夜的孤独患者 https://www.ximalaya.com/sound/427922274
9.聊天赚钱不需要真人认证,聊天赚钱哪个软件好?这个平台不止可以通过陪玩游戏来赚钱,还可以通过陪聊来赚钱,这个平台的盈利方式简单分为两种,一种是平台手续费,我们根据自己的情况级别来设置好自己的价钱,一般是按照时间来收费,然后平台一般会收取10%,剩下的90%都是你的,第二种就是通过聊天室打赏赚钱,比心上有专门的聊天室,我们选择自己擅长的聊天室进入,然后进行https://www.jianshu.com/p/5bd204586a79
10.串口调试助手完美版(破解版)最好用的串口调试助手软件迄今为止最好用的串口调试助手软件,比其它同类软件都稳定,也不存在丢数的情况,特别适合串口调试。一句话:稳定,易用,不丢数。注意:Windows7下运行破解时,右键选择“以管理员身份运行”应该就可以了,如果不行,请联系我。 串口调试助手 破解 串口助手 完美版 串口 2010-04-24 上传 大小:180KB 所https://www.iteye.com/resource/boystar2008-2280444
11.警惕这些电信网络诈骗权益免费“皮肤装备” 专骗“网瘾少年” 基本案情: 被告人刘某、谭某、蒋某通过手机软件“TT语音”发布打游戏的邀请,并在聊天室筛选低龄未成年人,通过聊天骗取被害人信任后,以赠送游戏皮肤等手段,通过QQ软件诱导被害人进行屏幕共享,并通过面对面红包或转账方式骗取8名被害人钱财,共计6万余元。上述被害人均为未成年人,https://www.workercn.cn/c/2023-08-21/7952237.shtml
12.好孩子画报等重大奖项,连年被评为“辽宁省一级期刊”。主要栏目 主要栏目:《小田鼠哇克》、《小黄蜂探长》、《小猪呼噜噜》、《红绿灯》、《健康宝贝蛋》、《生命的故事》、《童话甜点》、《快乐营地》、《梦幻影都》、《大眼奇趣网》、《我的地盘》、《动物聊天室》、《巧手宝贝》、《小小把戏》、《绝对小孩》等。https://baike.baidu.com/item/%E5%A5%BD%E5%AD%A9%E5%AD%90%E7%94%BB%E6%8A%A5/1314563
13.DNF女圣职者四职业排行女圣职者4职业哪个好(谁最厉害)DNF女圣职者四职业排行 女圣职者4职业哪个好(谁最厉害) 万众期待的女圣职者将会在6月22日正式登陆国服,在开放之前,相信大家对于各个职业都通过各种途径有所了解,但是还是有所纠结到底要玩哪一个?也确实如此,四个小姐姐都各有各的特点,今天小编就为大家带来这四个职业的简单介绍,大家可以稍微参考下。https://a.9game.cn/news/1684641.html
14.笔记本台式机打印机墨盒与硒鼓中国惠普购买,了解更多惠普打印机,笔记本,台式机 等相关信息。https://www.hp.com/