2017-03-22 9 views
0

signalrの簡単な例を実行しようとしていますが、私がしようとしている例はhereです。 $.connection.hub.start().doneが問題なく動作していることを確認しました。問題はchat.client.broadcastMessageが実行されていないことを確認するために警告が表示されますが、その警告は実行されませんでした。誰でも私の問題を解決するのに役立つことができますか?ここに私のコードは次のとおりです。client.broadcastMessageはsignalrで定義されていませんか?

page.aspxをチャット

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <style type="text/css"> 
     .container { 
      background-color: #99CCFF; 
      border: thick solid #808080; 
      padding: 20px; 
      margin: 20px; 
     } 
    </style> 
</head> 
<body> 
    <div class="container"> 
     <input type="text" id="message" /> 
     <input type="button" id="sendmessage" value="Send" /> 
     <input type="hidden" id="displayname" /> 
     <ul id="discussion"> 
     </ul> 
    </div> 
    <!--Script references. --> 
    <!--Reference the jQuery library. --> 
     <script src="scripts/jquery-1.6.4.min.js"></script> 
    <!--Reference the SignalR library. --> 
     <script src="scripts/jquery.signalR-2.2.1.min.js"></script> 
    <!--Reference the autogenerated SignalR hub script. --> 
<script src='<%: ResolveClientUrl("~/signalr/hubs") %>'></script> <!--Add script to update the page and send messages.--> 
    <script type="text/javascript"> 
     $(function() { 
      // Declare a proxy to reference the hub. 
      var chat = $.connection.chatHub; 
      // Create a function that the hub can call to broadcast messages. 
      chat.client.broadcastMessage = function (name, message) { 
       // Html encode display name and message. 
       var encodedName = $('<div />').text(name).html(); 
       var encodedMsg = $('<div />').text(message).html(); 
       // Add the message to the page. 
       $('#discussion').append('<li><strong>' + encodedName 
        + '</strong>:&nbsp;&nbsp;' + encodedMsg + '</li>'); 
      }; 
      // Get the user name and store it to prepend to messages. 
      $('#displayname').val(prompt('Enter your name:', '')); 
      // Set initial focus to message input box. 
      $('#message').focus(); 
      // Start the connection. 
      $.connection.hub.start().done(function() { 
       $('#sendmessage').click(function() { 
        // Call the Send method on the hub. 
        chat.server.send($('#displayname').val(), $('#message').val()); 
        // Clear text box and reset focus for next comment. 
        $('#message').val('').focus(); 
       }); 
      }); 
     }); 
    </script> 
</body> 
</html> 

ChatHub.cs

public class ChatHub : Hub 
    { 
     //used to send message to all clients 
     public void send(String name, String message) 
     { 
      Clients.All.brodcastMessage(name,message); 
     } 
    } 

Startup.cs

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

注:チャットをタイプすると、私はそれを理解しました。ドロップダウンメニューに私のクライアントが表示されないので、私はchat.client.broadcastMessageを呼び出すことができません、なぜですか?

+0

コンソールログを確認してエラーが発生しましたか? –

+0

@CarstenLøvboAndersenはい、私はそれを使用しており、内部にテキストを印刷しません。 :( –

答えて

0

私はbrodcastMessageの代わりにaddMessageを使用して問題を解決し、問題なく動作します。 ここにコードがあります...

chat.client.addMessage = function (name, message) //script side 


Clients.All.addMessage(name,message); //inside send method in the hub class 
関連する問題