2020年7月7日星期二

结合实际需求,在webapi内利用WebSocket建立单向的消息推送平台,让A页面和服务端建立WebSocket连接,让其他页面可以及时给A页面推送消息

1.需求示意图

 

 

 

2.需求描述

原本是为了给做unity3d客户端开发的同事提供不定时的消息推送,比如商城购买道具后服务端将道具信息推送给客户端。

本篇文章简化理解,用“相关部门开展活动,向全市人民征集社会服务改善意见”为例子。但核心想法一致:单向推送。所以这个功能并不是聊天室,即便websocket技术是做双向通信的,但在本需求中不需要核心页面和客户端之间互相通信。核心界面只和服务端建立WebSocket连接,推送消息全部来自其他地方。

只有核心页面和服务端建立WebSocket连接,其他市民们都是通过web开发者耳熟能详的http协议在发送消息,不要以为是市民们和部门公告栏玩WebSocket互动

3.代码如下,复制即可使用(webapi跨域的代码不演示)

①WebSocket帮助类,负责建立连接和推送消息

using System;using System.Collections.Generic;using System.Linq;using System.Net.WebSockets;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Web;using System.Web.WebSockets;namespace WSTest{ public class WSHelper {  /// <summary>  /// 保存客户端的WebSocket对象  /// </summary>  private static readonly Dictionary<string, WebSocket> dicSockets = new Dictionary<string, WebSocket>();  #region 构建线程安全的单例模式  private static WSHelper _instance;  private WSHelper()  {  }  public static WSHelper GetInstance()  {   if (_instance == null)   {    lock (dicSockets)    {     if (_instance == null)     {      _instance = new WSHelper();     }    }   }   return _instance;  }  

没有评论:

发表评论