Angular5 串接 SignalR

關於串接 SignalR 我自己是整理成下述兩種方法

一種是透過原生 Jquery 和 SingalR 在 index.html 頁面引用 新增一個 signalr service 然後在裡面重新封裝方法提供外部調用 可以參考
https://blog.johnwu.cc/article/asp-net-core-angular-4-教學-signalr.html

另一種就是找現成網路上別人寫好的套件 我測試兩種

@aspnet/signalr-client 參考了下述幾篇文章



最後在連線的時候都會跳出下述錯誤 但我實在找不到為什麼會這樣 因此換用另個套件
Failed to start the connection: TypeError: Cannot read property ‘length’ of undefined

翻了下 stackoverflow 找到這篇文章
這篇提到 angular/signalR 使用發生錯誤 Error: Failed to start the connection. SyntaxError: Unexpected end of JSON input
不過我沒遇到 但是它後來使用其他套件 ng2-signalr

ng2-signalr 使用起來相當容易 但我發現一個小問題在 Server call Client 的時候 不能同時獲取多個參數
這類的問題 在 github issue 中有人提出 然而並沒有獲得回應…

我自己打開原始碼查看

在 callback 原本是獲取整個 websocket 中所接收回來的 Array 但作者只有 cast 第一個元素

問題來了…這是原始碼 在專案執行的時候 拉回來的 npm 套件應該是 compile 過後的 因此我目前是直接修改 compile 最後的結果 (無法附圖 QQ)
找到 node_modules -> ng2-signalr -> src -> services -> connection -> signalr.connection.js
第 145行 將 casted = /** @type {?} / (args[0]); -> casted = /* @type {?} */ (args);

但這樣變成其他同仁如果要使用也得修改最後的套件js檔案…

請問各位前輩我該怎麼做?
修改原始碼後我也不知道怎麼測試才正常才能提交上去給作者…

  1. 直接用你自己的github路徑,搜尋npm install github
  2. 改完以後提出pr給作者,然後開始等待XD

謝謝你的回應 意思是我直接 fork 一份源碼到我的 github
然後修改專案的 package.json 依賴到我的 github fork 的結果上??

然後提出 pr 這段我不懂 pr的意思是?

可以參考這個: https://git-scm.com/book/zh-tw/v2/GitHub-參與一個專案

謝謝協助 我這周末找個時間試試看 :laughing:
剛剛去研究下文章 發現原來有人發出請求過 https://github.com/HNeukermans/ng2-signalr/pull/108

不過好像這樣會造成破壞性改變 所以協作者沒有同意
那這是不是意味著 我得自己去添加一個方法 而不是修改既有的方法啊?

如果已經有人改過,或者你可以考慮先用那個人的repo
不過就有可能會有風險就是

我自己 fork 一份回來 改完發出 PR 目前等對方回應了:laughing:
我自己本地 build 把檔案拉到 project 的 node_module 中 可以正常執行

總歸新增 一個 ListtenForRaw 就行 不知道會不會得到認同 :joy:

1個讚