升讯威在线客服系统是如何实现对 IE8 完全完美支持的(怎样从 WebSocket 降级到 Http)【干货】

这篇具有很好参考价值的文章主要介绍了升讯威在线客服系统是如何实现对 IE8 完全完美支持的(怎样从 WebSocket 降级到 Http)【干货】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放、开源、共享。努力打造 .net 社区的一款优秀开源产品。

完整私有化包下载地址

💾 https://kf.shengxunwei.com/freesite.zip

当前版本信息

发布日期: 2023-7-9
数据库版本: 20230402a
通信协议版本: 20220306
服务器版本: 1.11.10.0
客服程序版本: 1.11.2.0
更新程序版本: 1.2.0.0
资源站点版本: 1.6.2.0
Web管理后台版本: 2.0

升讯威在线客服系统是如何实现对 IE8 完全完美支持的(怎样从 WebSocket 降级到 Http)【干货】,websocket,http,网络协议

升讯威在线客服系统是如何实现对 IE8 完全完美支持的(怎样从 WebSocket 降级到 Http)【干货】,websocket,http,网络协议


如何实现对 IE8 完全完美支持

对于在线客服与营销系统,对浏览器的兼容性和支持至关重要。我在设计之初,就考虑了这个问题,访客端必须支持 IE8 以上的所有PC端和移动端浏览器。并且能够根据浏览器的片本,自动切换不同的能信方式,始终选择最优的方式与服务端通信。

此外,还需要考虑到对网络的波动的兼容,访客所使用的网络五花八门,使用手机时,APP随时会被切换到后台导致中断网络,或者访客本身所处的车库、电梯、郊外网络不佳,时断时续。系统必须能够合理的处理这些情况,做到:

  • 不中断会话
  • 不丢失消息。

这里存在几个技术难点需要注意:

  • IE8 和 IE9 不支持 WebSocket 通信,只能降级使用 Http Ajax 请求。
  • 短时间的网络中断,再次连接时,不可认为是新会话,必须能够接着进行未完成的会话。
  • 访客端页面的排版布局,必须完全兼容 IE8 和 IE9,做到美观一致。

本文我将详细的解释这些问题,以及如何实现对 IE8 的完全完美的兼容。

访客端在 IE8 下的效果:

升讯威在线客服系统是如何实现对 IE8 完全完美支持的(怎样从 WebSocket 降级到 Http)【干货】,websocket,http,网络协议

客服端与使用 IE8 的访客进行交流:

升讯威在线客服系统是如何实现对 IE8 完全完美支持的(怎样从 WebSocket 降级到 Http)【干货】,websocket,http,网络协议


首先判断用户的浏览器版本

首先我们能过 User-Agent 判断访客所使用的浏览器。
User-Agent通常格式:

Mozilla/5.0 (平台) 引擎版本 浏览器版本号

IE8 的 User-Agent:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)

IE9 的 User-Agent:

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

我们可以通过 JavaScript 从用户的浏览器中得到 User-Agent

  var ua = navigator.userAgent;

获得 User-Agent 之后,我们通过对内容的判断,就很容易知道用户使用的浏览器版本,从而为后续的工作做准备。

从 WebSocket 降级到 HTTP Ajax

当我们判断用用户的浏览器不支持 WebSocket 时,就需要对通信方式进行降级,我们使用 XMLHttpRequest 对象进行 HTTP 异步通信。

XMLHttpRequest 能够:

  • 在不重新加载页面的情况下更新网页
  • 在页面已加载后从服务器请求数据
  • 在页面已加载后从服务器接收数据
  • 在后台向服务器发送数据

通过一行简单的 JavaScript 代码,我们就可以创建 XMLHttpRequest 对象。

var xhr = new XMLHttpRequest();

该构造函数用于初始化一个 XMLHttpRequest 实例对象。在调用下列任何其他方法之前,必须先调用该构造函数,或通过其他方式,得到一个实例对象。

XMLHttpRequest 有一个 onreadystatechange 。它的值 (state_Change) 是一个函数的名称,当 XMLHttpRequest 对象的状态发生改变时,会触发此函数。状态从 0 (uninitialized) 到 4 (complete) 进行变化。在状态为 4 时,我们执行代码进行通信。

代码示例:

var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=new XMLHttpRequest();
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
}

function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"
  if (xmlhttp.status==200)
    {// 200 = OK
    // ...our code here...
    }
  else
    {
    alert("Problem retrieving XML data");
    }
  }
}

我们只需要在 xmlhttp.status 状态代码为 200 时,处理从服务器返回的数据即可。文章来源地址https://www.toymoban.com/news/detail-614747.html


结束~

希望对你有用,支持请点个赞吧~ 谢谢!

到了这里,关于升讯威在线客服系统是如何实现对 IE8 完全完美支持的(怎样从 WebSocket 降级到 Http)【干货】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源在线客服系统-客服系统历史消息记录功能-点击加载历史聊天记录-分页展示历史消息功能实现

    之前开发的开源在线客服系统gofly,访客端一直没有展示历史聊天记录,最近抽时间给加上了 实现的效果就是,访客刚进聊天界面,如果存在历史记录,按5条分页,默认查询加载5条聊天记录。 如果历史记录超过5条,顶部出现 “点击加载更多” 按钮,点击按钮就分页查询历

    2023年04月12日
    浏览(30)
  • 网站在线客服系统实时语音视频聊天实战开发,利用peerjs vue.js实现webRTC网页音视频客服系统...

    webRTC机制和peerjs库的介绍在其他博客中已经有了很多介绍,这里我直接搬运过来 WebRTC(Web Real-Time Communication)即:网页即时通信。 简单点讲,它可以实现浏览器网页与网页之间的音视频实时通信(或传输其它任何数据),目前主流浏览器都支持该API,WebRTC现在已经纳入W3C标准。

    2024年02月04日
    浏览(42)
  • 在线客服系统源码/在线对话聊天/多商户在线客服系统源码(可机器人自动聊天/支持app公众号网页H5)

    源码介绍 在线客服系统源码/在线对话聊天/多商户在线客服系统源码,它是一款基于Web的在线客服系统,适用于实现企业与客户之间的在线沟通以及咨询服务。该系统支持多商户、无限座席,可以为多个企业提供在线客服服务,不受座席数量的限制,用得起更方便了。 这个系

    2024年02月04日
    浏览(34)
  • PHP在线客服系统推荐

    在当今 数字化时代 , 企业客户服务的重要性不容忽视 。为了提供卓越的客户体验,许多企业正在寻找 PHP在线客服系统 。这种系统不仅可以满足客户的需求,还能提升企业的形象。本文将深入探讨 PHP在线客服系统的一些有趣话题 。 PHP在线客服系统 是基于PHP语言开发的一种

    2024年02月12日
    浏览(27)
  • 智能在线客服系统,客户问题接待更及时

    优质的客户服务可以提高客户的满意度和忠诚度,从而为企业带来更多的商业机会。智能在线客服系统,是指通过人工智能技术和自然语言处理技术,将客户的问题自动化地分配给相应的客服人员,从而实现客户问题的快速解答。相比传统的客服方式,智能在线客服系统具有

    2024年02月11日
    浏览(33)
  • 多国语言在线客服系统源码+软件下载二合一集成

    本文分三部分系统介绍如何开发一套在线客服系统聊天源码,该源码基于ThinkPHP,代码完全开源。 首先,我们只使用@auth指令。 其次,我们添加一个带有参数的订阅类型。 第三,我们更新@auth指令和订阅类型。 完整源码:kf.zxkfym.top 1 使用@auth指令并执行身份验证 添加和使用

    2024年02月01日
    浏览(44)
  • 【二开版】大魔王7.0-PHP来客云在线客服系统

    由于即时通讯软件不是存在敏感词汇就是收费,想找一个网上开源的又麻烦,来客云在线客服系统网上到处都能找到,但是由于开发时间太久,像公众号的一些消息服务受限不能用了,这一套客服系统只能做到基本的聊天对话功能,为什么选择二开呢?因为其他的功能基本还

    2024年02月14日
    浏览(24)
  • H5/APP客服端源码/uniapp在线客服系统源码开源了,全源码代码解读及发行安装教程...

    目前,即时通讯在线咨询在网站、APP、小程序中已经是不可获取的功能,尤其是专注于线上营销的商家,迫切需要一套可以随时与访客交流的即时通讯工具。 如果使用市面上的SaaS客服系统,会在功能上受限制,需要开通高级VIP,才能更好的使用,所以这些商家迫切需要可以

    2024年02月05日
    浏览(31)
  • 基于WebRTC技术的EasyRTC视频云服务系统在线视频客服解决方案

    随着互联网技术的发展,视频客服也成为服务行业的标配体验,基于WebRTC实时通信技术,客服人员与用户可以建立实时双向的视频交互与沟通。借助视频客服功能可以更加直观地了解用户的需求,提高沟通效率,并帮助用户解决问题。视频客服作为移动互联时代+客服的最佳实

    2024年01月25日
    浏览(32)
  • Servlet+JDBC实战开发书店项目讲解第10篇:在线客服功能实现

    要实现在线客服功能,您可以考虑以下步骤: 创建一个用于存储客户消息和回复的数据库表。您可以使用JDBC连接到数据库,并使用SQL语句创建表格。 在您的Servlet中,创建一个用于处理客户消息和回复的POST请求的端点。您可以使用HttpServletRequest对象获取客户端发送的消息,

    2024年02月12日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包