ajax与websocket的区别以及websocket常用使用方式 介绍

 更新时间:2018年06月24日 09:14:53   作者:guoke360  
这篇文章主要介绍了ajax与websocket的区别以及websocket常用使用方式 介绍,需要的朋友可以参考下

笔者近期在公司的项目中渐渐的接触了一些比较高级的业务逻辑处理,其中比较有意思的地方就是前端接受后台给与的推送问题。

一般前端与后端的交互主要是使用ajax进行异步操作调用交互,比较有趣的是这种交互方式一般都是单项交互的--

-及前端给后端发出请求后端接受请求后执行操作,即便前端可以接受后端给予的返回值,但是与后端交互的主动权始终是放在前端手里面。

而这样就会遇到两个有意思的问题--

1.前端如果调用的接口后端操作事件过长可能会导致返回操作响应时间过长,如果此时用户单击其他页面的时候就会导致返回操作无法正常解决。

2.如果后端有什么比较重要的问题需要推送给前端消息,这个时候前端是无法接收到的。

面对这两个问题的主流解决办法分别为针对第一条我们会给整个页面做一个加载中的动画并且锁定住整个页面从而强迫用户等待到整个后端返回值结束后再将页面解锁。

而对于第二点我们就要引入我们今天所讲的websocket这个概念。

一.什么是websocket

websocket协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

而他与常规的ajax最大的不同在于他可以双向接受和发送

一.websocket的简单使用

对于我们前端来说websocket的使用方式非常简单,协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。我们只需要自己定义一个ws服务就可以了

代码如下

var ws = new WebSocket("URL路径");
ws.onopen = function(evt) { 
 console.log("打开成功"); 
 ws.send("Hello WORD!");
};
ws.onmessage = function(evt) {
 console.log( "Received Message: " + evt.data);
 ws.close();
};
ws.onclose = function(evt) {
 console.log("服务关闭");
};  

如以上代码所示我们成功的创建了一个简单的名字为WS的websocket服务并且想后台定义的路径中发送了一条hello word的简讯并且会在接收到推送的时候打印Received Message

在你的ws服务打开以后会在前端的内一直处于挂起状态,由于现在框架横行,当你的框架或者说前端项目经过node编译或者运行时候你可以把ws服务写在所有页面的模板中就可以让项目只要处于被打开状态就能一直运行

这个时候你需要写接受推送消息即可,判断后端给你推送消息的类型并且做出相应的操作,完全不需要有ajax异步操作等待返回值或者返回值后自己操作时间太长而让用户等待太久的烦恼。而这一技术现在也普遍的用在了

在线聊天室和一些需要接受推送提示的地方。

不过值得注意的是一般情况下如果推送量较为大的话公司会选择一些比较大的云服务来做,比如笔者的公司就是使用的融云服务来做的,等笔者有空的话会专门开一次坑讲一讲融云服务的教程

总结

以上所述是小编给大家介绍的ajax与websocket的区别以及websocket常用使用方式 介绍,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

相关文章

  • 图文解析AJAX的原理

    图文解析AJAX的原理

    Ajax的工作原理相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。网上关于介绍ajax的原理有很多,本文将通过图文的形式给大家更直接明了的介绍,有需要的可以参考学习。
    2016-08-08
  • 有史以来最简单的AJAX回调库

    有史以来最简单的AJAX回调库

    很多时候我们只要用到一些简单的Ajax功能,提供一些简单的回调而不需要很花哨的东西。然而现有的很多Ajax库都很大,虽然功能很多但是我们很多时候根本就不需要用到他们,我就遇到过那样的经历,所以我想弄一个很简单的Ajax回调函数来搞定。
    2008-10-10
  • MUi框架ajax请求WebService接口实例

    MUi框架ajax请求WebService接口实例

    下面小编就为大家分享一篇MUi框架ajax请求WebService接口实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)

    基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)

    这篇文章主要介绍了基于bootstrap的上传插件fileinput 的ajax异步上传功能(支持多文件上传预览拖拽),非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • js跨域调用WebService的简单实例

    js跨域调用WebService的简单实例

    下面小编就为大家带来一篇js跨域调用WebService的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • 活到老学到老学习AJAX跨域(三)

    活到老学到老学习AJAX跨域(三)

    学习AJAX其实有个很重要的应用,就是为了执行另外几个站点的ASP,返回结果。通过本文给大家介绍ajax跨域相关知识,需要的朋友参考下
    2016-02-02
  • jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

    jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

    这篇文章主要介绍了jQuery通过Ajax向PHP服务端发送请求并返回JSON数据,设计到的知识点有jquery、ajax、php、json,感兴趣的朋友一起学习下jquery ajax 返回json
    2015-10-10
  • Ajax 实现加载进度条

    Ajax 实现加载进度条

    本文给大家介绍ajax实现加载进度条效果,非常不错,具有参考借鉴价值,需要的朋友参考下
    2016-12-12
  • 一个有趣的Ajax Hack示范

    一个有趣的Ajax Hack示范

    一个有趣的Ajax Hack示范...
    2006-11-11
  • Ajax如何进行跨域请求?Ajax跨域请求的原理

    Ajax如何进行跨域请求?Ajax跨域请求的原理

    Ajax如何进行跨域请求?这篇文章主要为大家详细介绍了Ajax跨域请求的原理,Ajax怎么样做跨域请求?具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论