欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 前端技术 > html >内容正文

html

前端常见知识点四之webscoket -ag凯发k8国际

发布时间:2024/10/12 html 22 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 前端常见知识点四之webscoket 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前端常见知识四之webscoket

1. 概览

1)websocket 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。(诞生在2008年,2011年成为国际标准)

2. 其他特点包括:

(1)建立在 tcp 协议之上,服务器端的实现比较容易。
(2)与 http 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 http 协议,因此握手时不容易屏蔽,能通过各种 http 代理服务器。
(3)数据格式比较轻量,性能开销小,通信高效。
(4)可以发送文本,也可以发送二进制数据。
(5)没有同源限制,客户端可以与任意服务器通信。
(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 url。(ws://example.com:80/some/path)

3. 实例

var ws = new websocket("wss://echo.websocket.org");ws.onopen = function(evt) { console.log("connection open ..."); ws.send("hello websockets!"); };ws.onmessage = function(evt) {console.log( "received message: " evt.data);ws.close(); };ws.onclose = function(evt) {console.log("connection closed."); };

4. 客户端的 api:

  • websocket 对象作为一个构造函数,用于新建 websocket 实例

    var ws = new websocket('ws://localhost:8080');
  • websocket.readystate
    readystate属性返回实例对象的当前状态,共有四种:
    connecting:值为0,表示正在连接。
    open:值为1,表示连接成功,可以通信了。
    closing:值为2,表示连接正在关闭。
    closed:值为3,表示连接已经关闭,或者打开连接失败

  • websocket.onopen
    实例对象的onopen属性,用于指定连接成功后的回调函数。

    ws.onopen = function () {ws.send('hello server!'); } //如果要指定多个回调函数,可以使用addeventlistener方法。 addeventlistener('open', function (event) {ws.send('hello server!'); })
  • websocket.onclose
    实例对象的onclose属性,用于指定连接关闭后的回调函数。

    ws.onclose = function(event) {var code = event.code;var reason = event.reason;var wasclean = event.wasclean;// handle close event };ws.addeventlistener("close", function(event) {var code = event.code;var reason = event.reason;var wasclean = event.wasclean;// handle close event });
  • websocket.onmessage
    实例对象的onmessage属性,用于指定收到服务器数据后的回调函数。

    ws.onmessage = function(event) {var data = event.data;// 处理数据 };ws.addeventlistener("message", function(event) {var data = event.data;// 处理数据 });
  • websocket.send()
    实例对象的send()方法用于向服务器发送数据。

    ws.send('your message');
  • websocket.bufferedamount
    实例对象的bufferedamount属性,表示还有多少字节的二进制数据没有发送出去。它可以用来判断发送是否结束。

    var data = new arraybuffer(10000000); socket.send(data);if (socket.bufferedamount === 0) {// 发送完毕 } else {// 发送还没结束 }
  • websocket.onerror
    实例对象的onerror属性,用于指定报错时的回调函数。

    socket.onerror = function(event) {// handle error event };socket.addeventlistener("error", function(event) {// handle error event });

原文请移步:websocket 教程

总结

以上是ag凯发k8国际为你收集整理的前端常见知识点四之webscoket的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图