@@ -507,9 +507,81 @@ Server: Apache-Coyote/1.1
507
507
508
508
### websocket
509
509
WebSocket协议支持客户端与远程主机之间进行全双工通信。
510
+ 协议标识符是ws(如果加密,则为wss),服务器网址就是 URL,比如:
511
+ ``` sh
512
+ ws://example.com:80/some/path`
513
+ ` ` `
514
+ # ### websocket握手协议
515
+ * 浏览器请求
516
+ ```
517
+ GET /webfin/websocket/ HTTP/1.1
518
+ Host: localhost
519
+ Upgrade: websocket
520
+ Connection: Upgrade
521
+ Sec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg==
522
+ Origin: http://服务器地址
523
+ Sec-WebSocket-Version: 13
524
+ ```
525
+
526
+ > WebSocket借用http请求进行握手,相比正常的http请求,多了一些内容。其中,
527
+ `Upgrade: websocket`
528
+ `Connection: Upgrade`
529
+ 表示希望将http协议升级到Websocket协议。
530
+ `Sec-WebSocket-Key`是浏览器随机生成的base64 encode的值,用来询问服务器是否是支持WebSocket。
510
531
532
+ * 服务器回应
533
+ ```
534
+ HTTP/1.1 101 Switching Protocols
535
+ Upgrade: websocket
536
+ Connection: Upgrade
537
+ Sec-WebSocket-Accept: K7DJLdLooIwIG/MOpvWFB3y3FE8=
538
+ ```
539
+ > 服务器返回
540
+ `Upgrade: websocket`
541
+ `Connection: Upgrade`
542
+ 告诉浏览器即将升级的是Websocket协议
543
+ #### HTML5 Web Socket API
544
+ * 创建对象
545
+ ```js
546
+ var ws = new WebSocket(url,name);
547
+ // url为WebSocket服务器的地址,name为发起握手的协议名称,为可选择项。
548
+ ```
549
+ * 发送文本消息
550
+ ``` js
551
+ ws .send (msg);
552
+ // msg为文本消息,对于其他类型的可以通过二进制形式发送。
553
+ ```
554
+ * 接收消息
555
+ ``` js
556
+ ws .onmessage = (function (){... })();
557
+ ```
558
+ * 错误处理
559
+ ``` js
560
+ ws .onerror = (function (){... })();
561
+ ```
562
+ * 关闭连接
563
+ ``` js
564
+ ws .close ();
565
+ ```
511
566
### coap
512
567
568
+ HTTP 与 COAP协议都是通过4个请求方法(GET, PUT, POST, DELETE)对服务器端资源进行操作。
569
+ 两者之间明显的区别在于HTTP是通过文本描述方式描述协议包内容,协议包里面会包含一些空格符,换行符等,协议包可读性很强。
570
+ 而COAP是通过定义二进制各位段功能来描述协议包内容。 因此COAP协议包大小更小,更紧凑。COAP协议最小的协议包只有4B。 协议包需要经过解析后才能知道里面具体内容
571
+
572
+ #### coap 特点
573
+ * 二进制通讯
574
+ * 对云端设备资源操作都是通过请求与响应机制来完成,类似HTTP,设备端可通过4个请求方法(GET, PUT, POST, DELETE)对服务器端资源进行操作。
575
+ * 协议包轻量级,最小长度仅为4B。
576
+ * 支持可靠传输,数据重传,块传输。 确保数据可靠到达。
577
+ * 支持IP多播, 即可以同时向多个设备发送请求
578
+ * 非长连接通信,适用于低功耗物联网场景
579
+
580
+ #### 协议结构
581
+ > coap基于UDP之上
582
+
583
+ UDP--->Messages--->request/response--->payload
584
+
513
585
### nb-iot
514
586
515
587
### freertos
0 commit comments