1..NET Core 实现基于Websocket的聊聊天在线聊天室
.NET Core 实现基于Websocket的在线聊天室
Websocket是解决Web实时通讯问题的一种技术,它在没有被发明前,天室人们通常使用HTTP长轮询(Long Polling)技术。源码这种技术虽然能实现双工通讯,室源但存在大量头部数据传输的聊聊天汇折卡源码浪费和服务器资源消耗的问题。WebSocket的天室strcpy源码出现很好地解决了这一问题,它基于TCP协议重新设计了一套协议,源码同时兼容HTTP,室源使用默认的聊聊天/端口。建立WebSocket链接实质上就是天室一次HTTP请求,通过HTTP协议的源码upgrade头标识为WebSocket请求,服务器端回复状态码表示成功握手。室源
在使用ASP.NET Core处理WebSocket时,聊聊天cad源码首先需要新建一个ASP.NET Core网站并创建WebsocketHandlerMiddleware中间件。天室这个中间件是源码管理WebSocket链接的入口,调用context.WebSockets.AcceptWebSocketAsync()方法将请求转换为WebSocket链接。在Invoke方法中接收WebSocket链接,便签 源码在Handle方法等待客户端的消息,通过MessageRoute方法对客户端的消息进行转发。
为了实现WebSocket链接和消息处理,还需要新建一个WebsocketClientCollection管理类来存放所有的人物源码WebSocket链接,以便统一管理。在Startup中使用中间件后,服务端基本搭建完成。
接下来,编写客户端HTML和JavaScript以实现聊天室界面。修改index.cshtml文件创建简单的聊天室UI,使用JavaScript操作WebSocket对象来建立和处理连接及消息。现代浏览器已经内置WebSocket支持,通过new WebSocket对象即可进行操作。
搭建完成后,运行聊天室效果。启动两个页面进行聊天,可以看到消息实时转发,这证明了聊天室成功搭建。源码已上传至GitHub(CoreWebsocketChatRoom),欢迎查看。