zoukankan      html  css  js  c++  java
  • 在Signalr的Hub中写方法实现与安卓的数据交互

      简介:

      实现数据实时刷新:SignalR

                 后台服务:.NET/WebAPI

      为了减轻web的压力,将接口中接收数据的方法写到SignalR的Hub中

      在此放一小段代码给自己加深下印象,博主有点健忘......

    /// <summary>
    /// 向客户端发送照片上传的结果
    /// </summary>
    /// <param name="imageInfo">JSON字符串</param>
    public void HhtUpCarInfo(string imageInfo)
    {
    //var声明一个变量,接收Base64StringToFile() 的返回值

    var uploadImageResult = Base64StringToFile(imageInfo);

    //然后通过Clients.All.Base64StringToFile(uploadImageResult)将结果返回给移动端
    Clients.All.Base64StringToFile(uploadImageResult);
    }

    /// <summary>
    /// 上传照片
    /// </summary>
    /// <param name="imageInfo"></param>
    /// <returns>图片的相对路径</returns>
    public string Base64StringToFile(string imageInfo)
    {

    //通过多次实验发现SignalR中只能接收安卓上传的字符串格式,所以在这里调用了博主自己的类库中一个将JSON转换成对象的方法来接收参数
    CarInfoImageDto carInfoImage = JsonHelper.DeserializeByNewton<CarInfoImageDto>(imageInfo);

    //调用博主自己的类库中将Base64String转换成图片的方法
    return DecodeBase64.Base64StringToFile(carInfoImage.Base64String, carInfoImage.FileType);
    }

    /// <summary>
    /// 将JSON字符串转换为C#对象
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="json"></param>
    /// <returns></returns>
    public static T DeserializeByNewton<T>(string json)
    {
    return JsonConvert.DeserializeObject<T>(json);
    }

    /// <summary>
    /// 上传图片信息
    /// </summary>
    /// <param name="base64String">Base64字符串</param>
    /// <param name="fileType">文件类型</param>
    /// <returns>如果保存成功,会返回文件的相对路径;否则返回空值</returns>
    public static string Base64StringToFile(string base64String, string fileType)
    {
    string virtualPath = string.Format("/File/{0:yyyyMMddhhmmss}.{1}", DateTime.Now, fileType);
    string physicalPath = HttpContext.Current.Server.MapPath(virtualPath);
    if (!string.IsNullOrEmpty(base64String) && !File.Exists(physicalPath))
    {
    byte[] imageBytes = Convert.FromBase64String(base64String);
    MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length);
    memoryStream.Write(imageBytes, 0, imageBytes.Length);
    Image image = Image.FromStream(memoryStream);
    image.Save(physicalPath);
    return virtualPath;
    }
    return "上传失败";
    }

    在上面的代码示例中可以深入了解SignalR与客户端数据的传输特点以及交互的实现。

    关于SignalR实现页面实时刷新的的功能可以去看一下博主SignalR分类下的文章,你会对SignalR有一个更深刻的认识。

    关注90後梦想大师,梦想从未止步.
  • 相关阅读:
    设计模式基本原则及实例
    Springboot中发送邮件util
    mysql表关联查询索引不生效问题
    个人读书清单整理
    mysql 显示每条记录行号
    Axure教程
    Tomcat配置及原理文章
    HTTPS 简单学习
    Python实现二叉树的非递归先序遍历
    和HTTP相关的web服务器内容
  • 原文地址:https://www.cnblogs.com/harveylv/p/6511278.html
Copyright © 2011-2022 走看看