WEFV2626EFCEYYYB15VEF |
內容簡介
- 保證印刷品完美的全部須知事項。
- 提出五十種最常見的校閱樣改正問題進行分析和闡釋。
- 從設計師到生產人員,凡與印刷有關的人士的必讀書籍。
- 全書使用特殊平面設計手段來突出彩色校樣的各種問題。
詳細資料
- ISBN:9627561045
- 規格:精裝 / 144頁 / 普通級 / 全彩印刷 / 再版
- 出版地:台灣
- 本書分類:> > >
前言 websocket是HTML5才出現的通訊協議,與HTTP協議不同,只是為了兼容現有瀏覽器的握手規範,也就是說它是HTTP協議上的一種補充。 ... HTTP HTTP1.0,很簡單,握手通過,一個request,一個response,結束。 HTTP2.0,握手通過,使用keep-alive,可以多個request,有多個response。 本質都是一樣的,請求 = 響應,一一對應。 有同學不禁要問,我用 http long poll,或者 ajax 輪詢,不是一樣的嗎?還要什麼websocket? Ajax輪詢 一般就是定時發起請求,不管什麼狀況,間隔時間就發起request。好比下面的對話: Ajax:飯好了嗎? Srv:沒有; Ajax:飯好了嗎? Srv:沒有; Ajax:飯好了嗎? Srv:好了; Ajax:飯好了嗎? Srv:好了; Ajax:飯好了嗎? Srv:好了,問了八百遍了,好了; Long poll 跟ajax輪詢差不多,不過這個是阻塞型,拿不到response不停。好比下面的對話: Poll:飯好了嗎? Srv:沒有……(洗菜,切菜,點火,炒菜,翻鍋)……好了,拿去。 Poll:好開心,飯好了。 websocket 講了兩個HTTP,終於輪到websocket了。 相對於HTTP的被動式響應,websocket可以給客戶端推送消息。好比下面的對話: WS:我要建websocket連接,需要服務:food,websocket協議 17 (HTTP Request)。 Srv:OK,確認升級為websocket協議。 WS:飯好了告訴我一聲。 Srv:米飯好了。 Srv:菜好了。 Srv:碗筷好了。 Srv:可以吃了了。 Srv:巴拉巴拉巴拉。 大家看到了吧,這種協議的好處就是,資源利用率提高了,服務端可以按需推送消息了,不必等客戶端請求才發送。 Go語言寫一個demo 我們寫一個最小,最簡單的demo,演示一個提供websocket服務的伺服器。 代碼如下: // main.go package main import ( "io" "net/http" "golang.org/x/net/websocket" ) func resp(ws *websocket.Conn) { io.Copy(ws, ws) } func main { http.Handle("/echo", websocket.Handler(resp)) http.Handle("/", http.FileServer(http.Dir("."))) err := http.ListenAndServe(":8090", nil) if err != nil { panic("ListenAndServe: " + err.Error) } } 這就是伺服器端全部的代碼,是不是超級簡單? 不用編譯,直接在命令行運行 go run main.go 那麼就有一個websocket伺服器監聽在 8090 埠了。 websocket客戶端 有了伺服器,我們再準備一個客戶端頁面,測試一下連接情況。 使用jquery把收到的信息動態展示在頁面上。在console控制臺列印接收和發送的數據。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Sample of websocket with golang</title> <script src="jquery-2.1.4.min.js"></script> <script> $(function { var ws = new WebSocket("ws://localhost:8090/echo"); ws.onmessage = function(e) { console.log("收到:" + event.data); }; var $ul = $('#msg-list'); $('#sendBtn').click(function{ var data = $('#name').val; ws.send(data); console.log("發送:" + data); $('<li>').text(data).appendTo($ul); }); }); </script> </head> <body> <input id="name" type="text" /> <input type="button" id="sendBtn" value="send"></input> <ul id="msg-list"></ul> </body> </html> 結合起來 本地瀏覽器打開index.html文件,並發送一些測試數據如下圖。 ... 使用按鈕發送輸入框內容,伺服器接到後,原封不動返回。 js使用WebSocket建立通信,並在控制臺列印收到的內容。 結語 相信通過Ajax,Long Poll,和websocket的對比,大家對websocket的作用原理,和使用方法,會有一個較為清晰的理解了。 Happy coding :-) 【本文由 @程式設計師小助手 發布,持續分享編程故事,歡迎關注】
WEFV2626EFCEYYYB15VEF |
文章來源取自於:
壹讀 https://read01.com/3z5nDmK.html
博客來 https://www.books.com.tw/exep/assp.php/888words/products/0010063450
如有侵權,請來信告知,我們會立刻下架。
DMCA:dmca(at)kubonews.com
聯絡我們:contact(at)kubonews.com
新社英倫風格的質感男仕理髮推薦染髮店神岡泰迪熊卷髮推薦髮廊台中挑染顏色襯膚色專業染髮燙髮髮廊潭子漸層漂染推薦髮型設計工作室
台中西區不顯老的髮型推薦染髮店 大肚剪壞頭髮修復推薦髮型設計工作室 日韓髮色台中染髮推薦新社日韓風格染髮推薦染髮店 北屯氧氣瀏海專業染髮燙髮髮廊 台中北區染髮推薦東勢不顯老的髮型推薦染髮髮廊 梧棲及肩直髮推薦髮廊 台中染髮推薦ptt神岡水波紋捲推薦髮型設計工作室 台中中區油頭造型推薦髮廊推薦染髮髮廊 布丁頭的救星推薦美髮沙龍
留言列表