0


UPDATE4:(解決済み

結局、すべてが魔法のように機能しました。SignalR チームに感謝します。


この SignalR でうまくいきました。試してみるのが待ちきれません!

このチュートリアルを見つけました - SignalR - 5 Minute Demo ( http://www.youtube.com/watch?v=tEBaDo_sFfA )

しかし、私はいくつかの問題を抱えています: - VS2012Ultimate をインストールし、サンプルの ASP.NET MVC4 インターネット アプリを作成した後、[参照] を右クリック -> [NuGet パッケージの管理] を選択し、SignalR を検索します.... ビデオのように表示されません。それら:SignalR、SignalR.Js、SignalR.Server ... :(誰も理由を知っていますか?

UPDATE1 : SignalR ( http://nuget.org/packages/microsoft.aspnet.signalr ) をインストールした後、その asp.net 秋の更新 ( http://www.microsoft.com/en-us/download ) をインストールしました/details.aspx?id=35493 )。

しかし、 からの関数 " writeMessage"に関して、以下からエラーが発生しますChatHub.cs

"Error1'Microsoft.AspNet.SignalR.Hubs.HubConnectionContext' does not contain a definition for 'writeMessage'
and no extension method 'writeMessage' accepting a first argument of type
'Microsoft.AspNet.SignalR.Hubs.HubConnectionContext' could be found (are you missing a using directive or an
assembly reference? ..\MvcApplication1\Hubs\ChatHub.cs"

Clients.All.またはを使用してこのエラーを「解決」しClients.Others.、チャットの初期化と使用の直後にハブを開始するとchat.writeMessage、GoogleChrome コンソールにロードするときに 2 つのエラーが発生します。

  • Index.cshtmlで:

    "Uncaught TypeError: Cannot set property 'writeMessage' of undefined"
    
  • localhost:3420/signalr/ hubs :

    "Uncaught TypeError: Object #<Object> has no method 'createProxy'"
    
    • この行で

      // Create and store the hub proxy
          hub._.proxy = hubConnection.createProxy(hub._.hubName);
      

Clients.All.またはを使用してこのエラーを「解決」した後Clients.Others.、最後にハブを開始し、chat.client.writeMessage(Microsoft.AspNet.SignalR.Clientをインストールしました)を使用すると、GoogleChromeコンソールにロードするときに2つのエラーが発生します。

  • Index.cshtmlで:

    "Uncaught TypeError: Cannot read property 'client' of undefined"
    

誰か助けてくれませんか?! :(

前もって感謝します!!

ファイル ChatHub.cs:

namespace MvcApplication1.Hubs
{
    //[Microsoft.AspNet.SignalR.Hubs.HubName("chathub")]
    [Microsoft.AspNet.SignalR.Hubs.HubName("chatHub")]
    public class ChatHub : Microsoft.AspNet.SignalR.Hubs.Hub
    {
        public void BroadcastMessage(string message)
        { 
            //rebroadcast the message to all the connected clients
            Clients.writeMessage(message);//ERROR on compile

        //I tried both of the followings, give no error, BUT when i press Submit doesn't appear messages anywhere
            //Clients.All.writeMessage(message);
            //Clients.Others.writeMessage(message);
        }
    }
}

ファイル Index.cshtml:

@section scripts
{
    <script type="text/javascript" src="~/Scripts/jquery.signalR-1.0.0-alpha2.js"></script>

@*not working, GET localhost:3420/SignalR 500 (Internal Server Error)*@
    @*<script type="text/javascript" src="SignalR"></script>*@

@*  with any of these declarations i don't get 500 error any more, but still not working *@
    <script type="text/javascript" src="~/signalr/hubs"></script>
    @*<script type="text/javascript" src="../signalr/hubs"></script>*@    

    <script type="text/javascript">
        $(document).ready(function()
        {
        //i tried these, but in vain..
            //var connection = new Microsoft.AspNet.SignalR.Connection("localhost:3420/");
            //$.connection.hub.url = 'localhost:3420/signalr/';

            var chat = $.connection.chatHub;

            $.connection.hub.start();

        //Uncaught TypeError: Cannot set property 'writeMessage' of undefined 
            //chat.writeMessage = function (msg)

        //Uncaught TypeError: Cannot read property 'client' of undefined 
            chat.client.writeMessage = function (msg) {
            {
                $("#messages").append("<li>" + msg + "</li>");
            }

            $("#buttonSubmit").click(function ()
            {
                //chat.broadcastMessage($("#txtInput").val());
                chat.server.broadcastMessage($("#txtInput").val());
            });

            $.connection.hub.start();//just one error at client
        });
    </script>
}
<h5>Chat with SignalR</h5>       
<fieldset>
    <legend>SignalR Demo</legend>
    <label for="txtInput">Chat Message</label>
    <input id="txtInput" type="text" />
    <button id="buttonSubmit">Submit</button>            
    <fieldset>
        <legend>Messages</legend>
        <ul id="messages"></ul>
    </fieldset>
</fieldset>

UPDATE2 :

Tim B Jamesのアドバイスの後、私は:

  • 新しい ASP.NET MVC 4 プロジェクトを作成しました。
  • 推奨されるコマンドを使用してNuGet経由でSignalRをインストールしました。
  • https://github.com/SignalR/SignalR/wiki/QuickStart-Hubsのハブでソース コードの例を試してみましたが、動作しませんでした!

言及:

- function のコードMainを my HomeController.cs-> function:に入れpublic ActionResult Index()ます。

- この行を変更しました:

var hubConnection = new HubConnection("localhost/mysite");

これで:

var hubConnection = new HubConnection("localhost:14079");

しかし、私のページは読み込まれません (「ローカルホストを待っています...」)

- Main からのコードをコントローラーの関数に入れないと、

私はこのエラーが発生します:

    "Uncaught TypeError: Cannot read property 'chat' of undefined "
on this line: 

    var chat = $.connection.chat;

UPDATE3 :

UPDATE2 で取り消し線

UPDATE4:(解決済み

冒頭の指摘。

4

2 に答える 2

2

最新バージョンには、文書化されていないニュアンスがいくつかあります。実際、私は今日それらに取り組んでいました。

まず、参照したリンクのメインからのコードは必要ありません。これは、WPF アプリまたは Windows 8 アプリ内で Signalr を使用するためのものです。

問題になる場合とそうでない場合がある最初の問題は、HubNameAttribute の使用です。必要な場合と必要でない場合があります。
HubName がない場合、ハブの名前は $.connection.chatHub に解決されます。

既に処理した次の部分は、各ハブの新しい名前空間です。

chatHub.client - These are client defined methods, that the server may invoke.
chatHub.server - These are server defined methods, that the client may invoke.
chatHub.state - This is the state that gets sent to and from the server.

現在、キャッチされていないエラーは JavaScript で出力が正しく取得されていないことであり、ハブ変数が null であるため、おそらくハブ定義です。ハブが適切に戻ってくることをカバーの下で確認する必要があります。

<script type="text/javascript" src="~/signalr/hubs"></script>

これは、すべてのハブとそれらのハブのサーバー メソッドを定義する、適切にフォーマットされた jQuery Ready ブロックを返す必要があります。Fiddlerのようなツールを使用すると、これに役立ちます。

また、Chrome または Firefox with Firebug の使用も開始します。どちらにも長所と短所がありますが、どちらもネットワーク モニターとデバッグ機能を提供します。未処理の例外をキャッチできることは、JavaScript のすべてをデバッグしようとする命の恩人でした。

これが、未解決の問題を解決するための探求に役立つことを願っています。

于 2012-11-20T06:00:37.960 に答える
0

まず、現在利用可能な SignalR のバージョンに関連して、YouTube ビデオは古くなっています。

次に、使用しているプロジェクトを削除して、もう一度やり直します。今回は、NuGet パッケージ マネージャーを使用して SignalR Alpha リリースをインストールします。

インストール パッケージ Microsoft.AspNet.SignalR -pre

インストール パッケージ Microsoft.AspNet.SignalR.client -pre

これが完了したら、ここにある SignalR Web サイトのドキュメント/例を読んでください。

https://github.com/SignalR/SignalR/wiki

基本のいくつかに従えば、ソートされるはずです。

于 2012-11-19T20:26:18.200 に答える