2019/0610/番外篇 Web Socket 即時連線& 就業前準備與技巧
#番外篇 即時聊天室 Web Socket
MVC 範本
作法
Controller View 需要Log才需要Model
不用Home做增加新的API控制器空的不用範本
Using System.Web
安裝插件並Using
Nuget裝Microsoft WebSockets

原理
Ip + Port 綁再一起就是 sockets
在傳輸層自訂傳輸方式
不同語言有不同物件C++ WinSock
Clint -> Reguest -> Server -> Response -> Clint
第七層 Http 逃脫不出這種框架會有限制
更新必須要按重新整理,你一年十年不按伺服器更新你畫面也不會有更動
客戶端要允許Sockets讓伺服器推送資料給客戶端
在一樣在Http方式下利用WebSockets通知
首先利用 HttpResponseMessage物件
在途中把http封包拿走
再來利用HttpContext物件承接
Current AcceptWebSocketRequest ( 當前 接受 web插座回應
Handler處理器

待補
Return Request 要求 CreateResponse(HttpStatusCode.SwitchingProtocols);
HTTP狀態碼。交換協議

接著新增一個 class 用於編寫自己的 WebSocket 的方法
但記得要繼承 class ChatWebSocketHandler:WebSocketHandler
首先
new一個字串存聊天的人的姓名
WebSocketCollection 採集
一定要有個東西觸發 打開 websockets
複寫OnOpen
複寫 OnMessage
選API目的是為了這個config

裡面有寫API的預設網址要到這裡查
@RenderSection("scripts", required: false)
接著編寫View
寫JQ配合按鈕觸發傳送值
還沒講Layout 但這邊先提一下
配合@RenderSection("scripts", required: false)
就能寫獨立頁面的 script 並寫放在正確的位置 不然會亂掉

@section scripts { }
接著要使用JS的物件WebSocket把url傳給他
發生錯誤不會有任何訊息,所以為了好偵錯 onerror
接著寫 DOM增加訊息元素li到ul裡面
Log到console.log();會比較好偵錯
結果Var ws = new WebSocket(url);
hand shack錯誤 ? 丟到網路前就錯誤
再開個新的專案 剛剛的少了一些東西
必須把Web API打勾

什麼都沒改 就都ok了
發言後伺服器會
Brocass給所有人?
配合jq dom Attribute Readonly disable display none show讓使用者體驗更好
離開聊天室 反著做 jq
接著講一下要怎樣把聊天室架起來?
IIS實體路徑找專案資料夾直接選擇即可
但是要改送sockets的Ip 改為伺服器的IP
###ftp://mvc@10.10.3.189/WebSocket2/WebSocket2/App_Start/WebApiConfig.cs
###ftp://mvc@10.10.3.189/WebSocket2/WebSocket2/Controllers/ChatController.cs
###ftp://mvc@10.10.3.189/WebSocket2/WebSocket2/Views/Home/Index.cshtml
###ftp://mvc@10.10.3.189/WebSocket2/WebSocket2/Views/Shared/_Layout.cshtml
#就業前準備與技巧



PDCA(Plan-Do-Check-Act)循環式品質管理循環


Last updated
Was this helpful?