SignalR 跨域解決方案全面


SignalR 分:PersistentConnectionHub 2種模式。

跨域又分:UseCorsJsonP  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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM