Signalr自託管最簡實踐
最近幾天,專案要開發一個即時通訊的產品,同時需要把服務端嵌入到已有的winform程式裡,也就是說,不能依賴網站釋出器(iis、tomcat、apache等)。
於是查了大量資料,發現絕大部分的資料,都是講的如何託管在web應用裡,真正其他託管的很少,即便有,往往也介紹不全,照抄之後,跑不起來。
於是花了一些時間,寫了一個自託管的signalr應用,現在把最簡配置記錄如下,希望對大家有所幫助。
首先,這個signalr服務端,是託管在winform程式裡,因此,第一步是建立一個winform專案ChatMgr, 同時建立一個空的web站點Test用來測試。
然後通過nuget給ChatMgr專案安裝Microsoft.AspNet.SignalR.SelfHost 和 Microsoft.Owin.Cors元件
接著給ChatMgr程式新增Signalr控制類Signalr.cs
這裡面有兩個物件類,一個是註冊signalr服務的啟動類Startup,一個是signalr控制器(集線器),具體資訊互動處理的實現類,
這裡只簡單實現一個資訊交換傳遞的方法。
接下來是在winform應用的入口處啟動signalr服務:
這裡注意,你註冊的signalr服務的domain,就是客戶端訪問的domain。
到這一步,服務端程式就建立好了,接下來搭建測試環境:
首先用nuget給測試站點新增jquery 和 Microsoft.AspNet.SignalR.JS的包引用
然後是一個簡單的測試頁,照搬的網上一個資料內容:
這裡也有注意事項,一是signalr.js依賴jquery,因此需要引用適當版本的jquery,
其次是在引用了signalr.js後,還需要配置服務端虛擬路徑,也就是上圖中紅框標註的空引用。
最後是整個專案的全家福:
接著執行起來測試一下,首先執行winform程式,啟動服務,
然後開啟網頁,嘗試發訊息:
ok,程式完全跑通!
今天給signalr服務新增了主推功能,根據網上資料,有三種實現方法,也列舉一下:
相關文章
- Serverless實踐-靜態網站託管Server網站
- Code:美團程式碼託管平臺的演進與實踐
- CICD最簡實踐————github actionsGithub
- 託管與非託管的混合程式設計程式設計
- C# 託管資源和非託管資源C#
- Uptime Kuma | 超棒的自託管監控工具
- 伺服器託管伺服器
- Oracle 託管檔案Oracle
- 託管C++執行緒鎖實現C++執行緒
- 伺服器託管是什麼意思,為什麼要託管?伺服器
- 重學c#系列——c# 託管和非託管資源(三)C#
- [.net 物件導向程式設計進階] (8) 託管與非託管物件程式設計
- 最簡單的微服務部署測試實踐微服務
- Visual C#託管Socket的實現方法C#
- 使用GitHub託管專案Github
- 博森量化軟體:託管錢包與非託管錢包的區別?
- 自動共享和上傳檔案到相容的託管站點
- 託管堆和垃圾回收(GC)GC
- 搭建自己的harbor(docker託管)Docker
- 開源託管站點大全
- 微信雲託管 WebSocket 實戰:基於模版實現訊息推送Web
- 最簡容器化動手小實踐——再戰flappybirdAPP
- 愛彼迎如何實現聯合房東的共同託管?
- 自託管服務清單——GitHub 熱點速覽 v.21.01Github
- 自動定位問題、自動修復故障?託管雲這個功能有點心動
- Git 託管平臺新增專案Git
- 如何在 ? Space 上託管 Unity 遊戲Unity遊戲
- 你需要託管資料庫嗎?資料庫
- 伺服器託管大寬頻伺服器
- 重學c#系列——c# 託管和非託管資源與程式碼相關(四)C#
- git提交程式碼託管平臺流程Git
- Git 託管平臺免密連線Git
- 6 個託管 git 倉庫的地方Git
- Git程式碼託管常用命令Git
- 前端學HTTP之Web主機託管前端HTTPWeb
- Silverlight 呼叫自託管的wcf 報跨域異常的處理跨域
- 最簡容器動手小實踐——FC坦克大戰遊戲容器化遊戲
- SignalR簡版web聊天室(實現過程分析篇)SignalRWeb