0

コンソール アプリケーションで SignalR を使用する方法の例はありますか? ウィキを読みましたが、アプリケーションを実行できませんでした。私が何をしたかをお見せします

サーバ:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.AspNet.SignalR;
using System.Threading.Tasks;
using System;
using Owin;
using Microsoft.AspNet.SignalR.Hubs;
using Microsoft.Owin.Hosting;


namespace SignalRChat.Server
{

    class Program
    {
        static void Main(string[] args)
        {
            string url = "http://localhost:8083";

            using (WebApplication.Start<Startup>(url)) {
                Console.WriteLine("Server running on {0}", url);
                Console.ReadLine();
            }
        }
    }

    class Startup
    {
         public void Configuration(IAppBuilder app)
         {
             app.MapHubs();
         }
    }
}

ハブ クラス:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.AspNet.SignalR.Hubs;

namespace SignalRChat.Server
{
    public class ChatHub : Hub
    {
        public void Send(string message)
        {
            Clients.All.addMessage(message);
        }
    }
}

クライアント:

<html>
    <head>
    <title>SignalR client</title>

    <script type="text/javascript" src="Scripts/jquery-1.6.4.min.js"></script>
    <script type="text/javascript" src="Scripts/jquery.signalR-0.5.1.min.js"></script>
    <script type="text/javascript" src="http://localhost:8083/signalr/hubs"></script>

    <script type="text/javascript">
    $(function () {
        // Proxy created on the fly
        var myHub = $.connection.chatHub;
        // Start the connection
        $.connection.hub.url = 'http://localhost:8083/signalr';
        $.connection.hub.start().done(function () {
            alert("Now connected!");
        }).fail(function () {
            alert("Could not Connect!");
        });
    });
    </script>

    </head>
    <body>
        <ul id="messages"></ul>
    </body>
</html>

コードに論理エラーがありますか?

4

2 に答える 2

1

サーバーとクライアントの両方で同じSignalRバージョンを使用していることを確認してください。また、0.5xではなく1.0または1.01を使用してください。

このサンプルは、セルフホスティングでそれを行う方法と「私のマシンで動作する」 https://github.com/ChristianWeyer/SignalR-SimpleChat-NOUGを示しています

HTH。

于 2013-03-18T15:29:20.633 に答える
0

クロスドメインの例をセットアップしたときに、同様の問題が発生しました。これを修正するために私がしなければならなかったことは次のとおりです。

クライアント側

$(function () {
    var url = 'http://localhost:8083/signalr';

    // start connection on a different port
    $.connection(url).start().done(function () {
        var someHub = $.connection.someHub;

        $.connection.hub.logging = true;
        $.connection.hub.error(function () {
            console.error('An error occurred with the hub connection.');
        });

        // seems to be a bug in CORs signalR client library that
        // the URL host in the connection object is not passed through to the hub
        $.connection.hub.url = url;

        someHub.client.someFunction = function (message) {
            console.log(message);
        };

        // since you have set the `$.connection.hub.url` this now works
        $.connection.hub.start(function () {
            console.log('Connection Established.');
        });

    });
});

サーバー側 (詳細なサーバー手順については、こちらを参照してください)

class Startup
{
    public void Configuration(IAppBuilder app)
    {
        // Don't forget to enable cross domaign
        app.MapHubs(new HubConfiguration { 
            EnableCrossDomain = true 
        });
    }
}
于 2013-04-10T19:32:20.760 に答える