SignalR跨域解決方案全面
原文:SignalR 跨域解決方案全面
SignalR 分:PersistentConnection和Hub 2種模式。
跨域又分:UseCors和JsonP 2種方法
所以例子寫了4種。
核心程式碼:
UseCors
//PersistentConnection Mode app.UseCors(CorsOptions.AllowAll); //PersistentConnection Mode app.MapSignalR<MyConnection>("/server", new ConnectionConfiguration() { }); // 有關如何配置應用程式的詳細資訊,請訪問 http://go.microsoft.com/fwlink/?LinkID=316888 //Hub Mode app.MapSignalR("/lcc", new HubConfiguration());
Use JsonP
//PersistentConnection Mode app.MapSignalR<MyConnection>("/server", new ConnectionConfiguration() { EnableJSONP = true }); // 有關如何配置應用程式的詳細資訊,請訪問 http://go.microsoft.com/fwlink/?LinkID=316888 //Hub Mode app.MapSignalR("/lcc", new HubConfiguration() { EnableJSONP = true });
Cross HUb 前端
// 建立對應server端Hub class的物件,請注意geffChat的第一個字母要改成小寫 var chat = $.connection.myHub; $.connection.hub.url = `http://localhost:2001/lcc`; //把connection開啟 $.connection.hub.start().done(function () { chat.server.hello(); }); // 定義client端的javascript function,供server端hub,通過dynamic的方式,呼叫所有Clients的javascript function chat.client.sendMessage = function (message) { //當server端呼叫sendMessage時,將server push的message資料,呈現在wholeMessage中 $(`#messages`).append(`<li>` + message + `</li>`); }; $("#broadcast").click(function () { chat.server.sendMessage($(`#msg`).val()); $(`#msg`).val(""); }); $("#btnStop").click(function () { $.connection.hub.stop(); });
Cross Connection 前端
var connection = $.connection("http://localhost:2001/server"); connection.received(function (data) { $(`#messages`).append(`<li>` + data + `</li>`); }); connection.start(); $("#broadcast").click(function () { connection.send($(`#msg`).val()); }); $("#btnStop").click(function () { connection.stop(); });
JsonP HUb
// 建立對應server端Hub class的物件,請注意geffChat的第一個字母要改成小寫 var chat = $.connection.myHub; $.connection.hub.url = `http://localhost:16727/lcc`; //把connection開啟 $.connection.hub.start({ jsonp: true }).done(function () { chat.server.hello(); }); // 定義client端的javascript function,供server端hub,通過dynamic的方式,呼叫所有Clients的javascript function chat.client.sendMessage = function (message) { //當server端呼叫sendMessage時,將server push的message資料,呈現在wholeMessage中 $(`#messages`).append(`<li>` + message + `</li>`); }; $("#broadcast").click(function () { chat.server.sendMessage($(`#msg`).val()); $(`#msg`).val(""); }); $("#btnStop").click(function () { $.connection.hub.stop(); });
JsonP connection
var connection = $.connection("http://localhost:16727/server"); connection.received(function (data) { $(`#messages`).append(`<li>` + data + `</li>`); }); connection.start({ jsonp: true }); $("#broadcast").click(function () { connection.send($(`#msg`).val()); }); $("#btnStop").click(function () { connection.stop(); });
程式碼下載:http://download.csdn.net/detail/shikyoh/9734460
相關文章
- SignalR跨域問題解決SignalR跨域
- iris 跨域解決方案跨域
- js跨域解決方案(一)JS跨域
- 前端跨域的解決方案前端跨域
- 跨域問題,解決方案 – CORS方案跨域CORS
- 跨域多方位解決方案跨域
- 跨域問題及解決方案跨域
- 跨域解決方案(總結篇)跨域
- SpringBoot跨域問題解決方案Spring Boot跨域
- 跨域的原因以及解決方案跨域
- 前端跨域問題及其解決方案前端跨域
- 常見的跨域解決方案(全)跨域
- Flutter Web 跨域問題解決方案FlutterWeb跨域
- nginx /Java 解決跨域問題方案NginxJava跨域
- 簡單的瞭解跨域以及解決方案跨域
- 什麼是跨域?解決方案有哪些?跨域
- Ajax 跨域請求 Access to XMLHttpRequest 解決方案跨域XMLHTTP
- Vue中跨域問題解決方案1Vue跨域
- Vue 前端跨域的解決方案(心得記錄)Vue前端跨域
- Laravel6.X 跨域問題解決方案Laravel跨域
- 一種方便的跨域開發解決方案跨域
- 解決 ajax 跨域跨域
- Django解決跨域Django跨域
- Web 學習之跨域問題及解決方案Web跨域
- 瀏覽器同源策略及 Ajax 跨域解決方案瀏覽器跨域
- 24.什麼是跨域?解決方案有哪些?跨域
- web前端跨域解決方案JSONP,CORS,NGINX反向代理Web前端跨域JSONCORSNginx
- 解決跨域問題跨域
- 深入跨域問題(3) – 利用 JSONP 解決跨域跨域JSON
- 深入跨域問題(3) - 利用 JSONP 解決跨域跨域JSON
- 深入跨域問題(2) - 利用 CORS 解決跨域跨域CORS
- Nginx解決前端跨域問題 CORS跨域配置Nginx前端跨域CORS
- vue-cli3構建專案跨域解決方案Vue跨域
- 前端跨域問題解決方案(基於node與nginx)前端跨域Nginx
- 分享跨域訪問的解決方案與基礎分析跨域
- 為什麼出現OPTIONS?SpringBoot介面跨域解決方案Spring Boot跨域
- jq jsonp跨域報錯之“Unexpected token :”的解決方案JSON跨域
- Laravel5.7 跨域解決Laravel跨域