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.在线匿名聊天网站,虚拟交流的新领域探索军事电子装备1、匿名性:在线匿名聊天网站的核心特点在于用户的匿名性,用户可以在不透露真实身份的情况下,与他人进行交流和沟通。 2、多样性:在线匿名聊天网站涵盖了各种主题和兴趣群体,用户可以根据自己的需求选择合适的聊天室。 3、便捷性:在线匿名聊天网站不受时间、地点限制,用户可以随时随地进行交流,极大地提高了社交的便捷性。http://www.thhkgp.com/post/2305.html
2.使用WebSocket实现一个简易的在线聊天室(SpringBoot+Vue3,附源代先展示一下在线聊天室的效果(需要在两个不同的浏览器中打开) 0. 问题引入 相信大家在很多网站看到过以上效果:当收到一封新的邮件时,未读邮件图标右上角上的总数就会加一 大家有没有想过,服务器是如何_主动_地将消息实时推送给客户端的呢 1. 常见的消息推送方式 https://blog.csdn.net/m0_74825172/article/details/144276872
3.网页实时聊天之js和jQuery实现ajax长轮询腾讯云开发者社区聊天室消息处理: 为了防止每次都查询到全部信息,我们对数据库的查询操作更改一下,设置idflag=0,每次查询后,设置idflag为查询到的数据的id,查询时我们查询比idflag大的ID,即,新添加进去的信息。 这样,一个简单的聊天室程序就做好了。 如果您觉得本文对您有帮助,您可以推荐或关注我,如果您有什么问题,可以在下方https://cloud.tencent.com/developer/article/1012669
4.社交网络发展简史1988-即时聊天软件和聊天室 1994-中国全功能接入互联网 1994-曙光站 1992—1996-ChinaFidoNet(中国惠多网) 1995—1999中国网络论坛、聊天室 2000-聊聊 1996-ICQ 1997-AIM 1999-OICQ(QQ前身) 1999-MSN 1999-雅虎通 1997-Bolt、Six Degrees 1997-六度空间 1998-社交博客 2003-Friendster、MySpace 2003-Friendster https://zhuanlan.zhihu.com/p/577005192
5.新浪视频聊天新浪SHOW—邂逅、偶遇,我在直播等你!http://www.sinashow.com/
6.阿里巴巴网页即时聊天室社会新闻早报|网页即时聊天室 2024-11-30 05:40:24 来源: 猫眼电影 作者: 陈光力 手机查看 猫眼电影记者 陈光力 报道 “ji极管li你的he心业wu,这zhen是一ji难吃de药。wo们有hen多艰ku的工zuo要做。”墨fei表示,虽然di特律qi车制zao商需yao重新si考在zhong国的jing营方shi,但mei国电dong汽车ling导者te斯拉de情http://mall.chinahrd.net/huwei/20240730/78568.shtml?/appheji/6924153039_20240807.shtml
7.APP聊天源码,小程序聊天源码,H5网页聊天室泡泡IM是一套完整的即时通讯软件源码,可用作手机APP聊天源码,微信聊天小程序,H5网页聊天室,社交软件源码,支持语音、视频、文字聊天。泡泡IM聊天源码常用于APP即时通讯,用户间实时沟通、在线客服系统等诸多场景。https://www.popoim.com/
8.woocall网友可以快捷的发送聊天信息,Enter为发送快捷键。改名——重新设定昵称 网友可以随时修改自己的名字 房间历史记录 网友第一次进入聊天室,可以看到此前近几条其他网友的聊天记录,就可以很快加入聊天。广播 广播中发布与话题相关的重要信息,包括文字,文字链接,图片等形式。选择立场辩论(论战版功能)网友可以选择正、https://baike.baidu.com/item/woocall/8889694
9.C#制作简单的多人在线即时交流聊天室实现网页版的在线聊天室的方法有很多,在没有来到HTML5之前,常见的有:定时轮询、长连接+长轮询、基于第三方插件(如FLASH的Socket),而如果是HTML5,则比较简单,可以直接使用WebSocket,当然HTML5目前在PC端并没有被所有浏览器支持,所以我的这个聊天室仍是基于长连接+长轮询+原生的JS及AJAX实现的多人在线即时交流聊天室https://www.xiuzhanwang.com/a1/C_jiaocheng/6834.html
10.Title:APP聊天源码,小程序聊天源码,H5网页聊天室0 - 反链 0 0 - 0 - 最近访问 tronssien.comwww.feiyueshalun.comsouxiaowl.comttdancing.comaikuangzhijia.comm.qd24k99.comwlxysy.comwww.menghuwangluo.comm.shiguowangdzx.comwakeyoga.compinxuanxgt.comwww.lingyunzhimei.comwww.zhangzihan.com.cnuniseaskyfood.comwww.uojbls.comm.zkhmkj.cn00613.http://zttx121.com/tools/seo-lookup/www.popoim.com
11.爱聊视频聊天室www.loveliao.com简介:爱聊聊天室是是国内人气领先的免费视频聊天网站之一,24小时精彩大型多人免费视频聊天室,美女主播网友与你面对面视频聊天,高质量的网上视频聊天体验,真实自然的在线聊天,免费网站数据APPPC排名 百度权重 百度预估流量 百度收录 -- 211 7512 单月收录 百度索引量 百度反链数 关键词数 4 7512 51.40万 82 APPPChttps://mtop.chinaz.com/site_www.loveliao.com.html
12.2024年聊天软件:开启全新沟通方式新浪SHOW聊天室 4.0.165 官方 软件分类:即时通讯大小:45.18 MB时间:2022-03-25 软件介绍:新浪SHOW是一款由新浪开发的多人视频互动聊天工具。集成同城交友、婚恋交友、财经股票、同龄相约、音乐歌舞 立即查看 6.聊聊PC客户端 3.1.3 聊聊语音是一款先进的网络交友软件,利用最先进的语音视频技术,让用户能够与亲朋好友、https://app.zol.com.cn/jiqiao/142843.html
13.中国互联网二十年回忆网络应用与网络速度的关系非常紧密,在一个网速非常低,而网费又非常贵的年代,能够节省网费并提高打开网页的速度是人们普遍的愿望,人们的上网应用无不和此有关。新版的浏览器可以让访问网页速度提高,微软的电子邮件Outlook可以将邮件下载到本地离线查看,ICQ等即时通讯软件可以在低速网络下快速交流聊天,IRC聊天室是速度非常https://www.digitaling.com/articles/11228.html
14.网页聊天聊天室摸鱼开黑网页聊天 WYLT.COM 和平精英聊天开黑 点击进入 绝地求生聊天开黑 点击进入 文章&资讯 点击进入 CSGO聊天开黑 点击进入 闲聊 点击进入 点击进入 广场 瞬间/话题/帖子 聊天室 LOL聊天开黑 点击进入 和平精英聊天开黑 点击进入 绝地求生聊天开黑 点击进入 文章&资讯 点击进入 CSGO聊天开黑 点击进入 闲聊 点击进入 点击https://wylt.com/
15.网页聊天室软件下载网页聊天室软件是备受好评的免费软件,其功能十分全面且强大。软件界面语言全部是中文,所以操作极其方便。网页聊天室软件最后的更新时间是2024年07月20日,升级后修复了上个版本的错误。另外还优化了软件大小,软件大小是5.85MB,更专业的同时,更加轻快便捷了。 网页聊天室软件更新到这个版本,确实有了很大的进步,使用体验上https://www.180disk.com/soft/99378.html
16.web网页版聊天室51CTO博客已为您找到关于web网页版聊天室的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及web网页版聊天室问答内容。更多web网页版聊天室相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/webwangyebanliaotianshi.html
17.网页聊天室网站美女视频直播秀场秀色热点网页聊天室网站 现今很多人都选择网上聊天,因此网上聊天室也很多,在众多聊天室中,秀色网页聊天室网站受到很多人的喜欢,无论是年轻人,还是喜欢聊天的人都选择这里,这里安全稳定,随时随地让你听音乐,还能与你的女神面对面视频交友,快来网页聊天室网站,一起聊起来吧。https://www.showself.com/redian/redianW_2305.html
18.手把手教你撸一个网页聊天室在写这个demo的时候,我是边学边写的状态,学习资料以刘哇勇大神的Node.js+Web Socket 打造即时聊天程序嗨聊为主,主流搜索引擎和我最喜欢的技术社区SegmentFault为辅。 源码 源码已经上传至我的github, clone到本地以后在terminal中运行下面两条命令: npm install https://www.jianshu.com/p/3536b8bc0a8d
19.基于JAVA技术的即时通讯工具(聊天室)的设计与实现Javaweb计算机当今社会,计算机网络已经成为人们生活中不可缺少的一部分,人们从互连网上获取信息与朋友交流,网络应用越来越广泛,而网站如雨后春笋般地一个接着一个冒出来,因为提供静态信息的HTML网页并没有办法达到与用户交互的目的,所以才出现了各种交互式网页技术。要建设一个聊天室,首先,这个聊天室的整体概况要在我们脑海中要有https://www.2bysj.cn/Article/jsp/200905/1795.html
20.网页聊天室源码(WebChat)开发实例源码下载网页聊天室源码(WebChat) WEB/WAP应用开发 下载此实例 开发语言:Java 实例大小:19.97M 下载次数:92 浏览次数:4938 发布时间:2019-04-18 实例类别:WEB/WAP应用开发 发布人:petter1/1 文件格式:.zip 所需积分:2 相关标签:javawebchat 网友评论举报投诉收藏该页https://www.haolizi.net/example/view_21044.html
21.用tio来写一个网页聊天室或客服是个怎样的体验本文手把手教大家如何用t-io快速做一个网页版聊天室---可能这不仅仅只是个小demo,它更多的可作为项目的一个脚手架,读者可以以此为基础,完成一个真实的网页聊天室,甚至扩展成一个在线客服。 本文有部分代码并非必须,譬如数据监控相关的listener,但是在大型的项目中,对这些监控数据的处理却是一个必须,所以本文从实用https://www.imooc.com/article/29379
22.聊聊聊聊视频语音聊天室免费视频语音聊天交友聊聊(www.liaoliao.com聊聊网)是最早的免费语音聊天室。聊聊视频聊天室拥有高质量语音视频,帅哥美女在线视频聊天、在线直播,是同城交友、视频语音、免费聊天、K歌游戏的聊天平台。https://www.liaoliao.com/
23.亮剑江湖江湖聊天室江湖,是由亮剑江湖开发的怀旧版文字江湖聊天室游戏,无需下载,打开即玩,支持电脑版手机版。在江湖中您可以聊天交友,结婚生子,洞房花烛,可以打怪升级,养猪种花,招募士兵,比武论剑,创立门派。http://www.wangyejh.com/
24.我爱江湖聊天室江湖聊天室江湖我爱江湖江湖聊天室是一款怀旧网页江湖游戏。http://www.5ajh.com/