zoukankan      html  css  js  c++  java
  • websocket-shap 函数Broadcast的使用方法

    Broadcast:在websocket-shap函数的定义是:向WebSocket服务中的每个客户端发送数据,类似于广播的效果

    如果要使用异步发送,可使用BroadcastAsync函数。

    在源码中的代码片段如下:

    //向WebSocket服务中的每个客户端发送string数据
     public void Broadcast (string data)
        {
          if (_state != ServerState.Start) {
            var msg = "管理器的当前状态为“未启动”|The current state of the manager is not Start.";
            throw new InvalidOperationException (msg);
          }
    
          if (data == null)
            throw new ArgumentNullException ("data");
    
          byte[] bytes;
          if (!data.TryGetUTF8EncodedBytes (out bytes)) {
            var msg = "无法进行utf-8编码|It could not be UTF-8-encoded.";
            throw new ArgumentException (msg, "data");
          }
    
          if (bytes.LongLength <= WebSocket.FragmentLength)
            broadcast (Opcode.Text, bytes, null);
          else
            broadcast (Opcode.Text, new MemoryStream (bytes), null);
        }
    //向WebSocket服务中的每个客户端发送stream数据 
    public void Broadcast (Stream stream, int length)
        {
          if (_state != ServerState.Start) {
            var msg = "The current state of the manager is not Start.";
            throw new InvalidOperationException (msg);
          }
    
          if (stream == null)
            throw new ArgumentNullException ("stream");
    
          if (!stream.CanRead) {
            var msg = "It cannot be read.";
            throw new ArgumentException (msg, "stream");
          }
    
          if (length < 1) {
            var msg = "Less than 1.";
            throw new ArgumentException (msg, "length");
          }
    
          var bytes = stream.ReadBytes (length);
    
          var len = bytes.Length;
          if (len == 0) {
            var msg = "No data could be read from it.";
            throw new ArgumentException (msg, "stream");
          }
    
          if (len < length) {
            _log.Warn (
              String.Format (
                "Only {0} byte(s) of data could be read from the stream.",
                len
              )
            );
          }
    
          if (len <= WebSocket.FragmentLength)
            broadcast (Opcode.Binary, bytes, null);
          else
            broadcast (Opcode.Binary, new MemoryStream (bytes), null);
        }
    //c# 调用方式:
    private
    void Broadcast(string msg, string type = "1") { var data = new JsonDto() { content = msg, type = type, name = "" }; //发送广播数据,每个在线的客户端都可以收到信息 Sessions.Broadcast(Newtonsoft.Json.JsonConvert.SerializeObject(data)); }
  • 相关阅读:
    iptables
    iftop
    sed&awk
    rz&sz
    关于springboot + mybatis plus 使用事务
    关于JsonArray.toList转换
    jmeter脚本录制
    去掉百度右边的百度热搜等干扰项,集中注意力呀~~
    报错
    图片的异步上传
  • 原文地址:https://www.cnblogs.com/innershare/p/10839492.html
Copyright © 2011-2022 走看看