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?