2016-04-30 9 views
2

C#を使用してASP.NET WebFormsでWebアプリケーションを構築しています(まだ学習中)。集中データベースがあり、すべてのクライアントが同じ静的各クライアントは独自の ユニークなオフィスIDを持っています。各オフィスには独自のオフィスIDを持つ16のオフィスがあります。新しく変更された新機能について新しいメッセージを送信します。 /features、私たちはそれが私が言及したすべてのオフィスからのようなブロードキャストメッセージとして送信することができます OfficeId = 14の企業のオフィスがあります。したがって、他のオフィスからのユーザーのログインは、変更通知については、 についてお知らせします。thについての詳細を入力するフォームeの変更とcorporteオフィスからユーザーがそれを保存する瞬間、それは すべてのクライアントのインデックスページに表示されますか?ブロードキャストPOP-UPメッセージをすべての接続済みクライアントに送信

私はこれについて多くの研究をしましたが、確かな説明を得ることができませんでした。これは、ここにあるすべての専門家のための重複または不明瞭な質問かもしれません。 私に同行してください。

答えて

2

チェックコード次ChatHubクラスと使用から、このリンクASP.Net SignalR: Building a Simple Real-Time Chat Application

public class ChatHub : Hub 
{ 
    static ConcurrentDictionary<string, string> dic = new ConcurrentDictionary<string, string>(); 

    public void Send(string name, string message) 
    { 
     Clients.All.broadcastMessage(name, message); 
    } 



    public void Notify(string name, string id) 
    { 
     if (dic.ContainsKey(name)) 
     { 
      Clients.Caller.differentName(); 
     } 
     else 
     { 
      dic.TryAdd(name, id); 
      foreach (KeyValuePair<String, String> entry in dic) 
      { 
       Clients.Caller.online(entry.Key); 
      } 
      Clients.Others.enters(name); 
     } 
    } 

    public override Task OnDisconnected() 
    { 
     var name = dic.FirstOrDefault(x => x.Value == Context.ConnectionId.ToString()); 
     string s; 
     dic.TryRemove(name.Key, out s); 
     return Clients.All.disconnected(name.Key); 
    } 

} 

そして、HTML + JavaScriptの

<script type="text/javascript"> 

      $(function() { 
       showModalUserNickName(); 
      }); 

      function showModalUserNickName() { 
       $("#dialog").dialog({ 
        modal: true, 
        buttons: { 
         Ok: function() { 
          $(this).dialog("close"); 
          startChartHub(); 
         } 
        } 
       }); 
      } 

      function startChartHub() { 
       var chat = $.connection.chatHub; 

       // Get the user name. 
       $('#nickname').val($('#nick').val()); 
       chat.client.differentName = function (name) { 
        showModalUserNickName(); 
        return false; 
        // Prompts for different user name 
        $('#nickname').val($('#nick').val()); 
        chat.server.notify($('#nickname').val(), $.connection.hub.id); 
       }; 

       chat.client.online = function (name) { 
        // Update list of users 
        if (name == $('#nickname').val()) 
         $('#onlineusers').append('<div class="border" style="color:green">You: ' + name + '</div>'); 
        else { 
         $('#onlineusers').append('<div class="border">' + name + '</div>'); 
        } 
       }; 

       chat.client.enters = function (name) { 
        $('#chatlog').append('<div style="font-style:italic;"><i>' + name + ' joins the conversation</i></div>'); 
        $('#onlineusers').append('<div class="border">' + name + '</div>'); 
       }; 
       // Create a function that the hub can call to broadcast chat messages. 
       chat.client.broadcastMessage = function (name, message) { 
        //Interpret smileys 
        message = message.replace(":)", "<img src=\"/images/smile.gif\" class=\"smileys\" />"); 
        message = message.replace("lol", "<img src=\"/images/laugh.gif\" class=\"smileys\" />"); 
        message = message.replace(":o", "<img src=\"/images/cool.gif\" class=\"smileys\" />"); 

        //display the message 
        $('#chatlog').append('<div class="border"><span style="color:red">' + name + '</span>: ' + message + '</div>'); 
       }; 

       chat.client.disconnected = function (name) { 
        //Calls when someone leaves the page 
        $('#chatlog').append('<div style="font-style:italic;"><i>' + name + ' leaves the conversation</i></div>'); 
        $('#onlineusers div').remove(":contains('" + name + "')"); 
       } 

       // Start the connection. 
       $.connection.hub.start().done(function() { 
        //Calls the notify method of the server 
        chat.server.notify($('#nickname').val(), $.connection.hub.id); 

        $('#btnsend').click(function() { 

          // Call the Send method on the hub. 
          chat.server.send($('#nickname').val(), $('#message').val()); 

         // Clear text box and reset focus for next comment. 
         $('#message').val('').focus(); 
        }); 

       }); 
      } 

     </script> 
<div id="container"> 
<input type="hidden" id="nickname" /> 
<div id="chatlog"></div> 
<div id="onlineusers"> 
    <b>Online Users</b> 
</div> 
<div id="chatarea"> 
    <div class="messagelog"> 
     <textarea spellcheck="true" id="message" class="messagebox"></textarea> 
    </div> 
    <div class="actionpane"> 
     <input type="button" id="btnsend" value="Send" /> 
    </div> 
    <div class="actionpane"> 

    </div> 
</div> 
<div id="dialog" title="Enter your name to start a chat."> 
    <input type="text" id="nick" /> 
</div> 

+0

ブロードキャストメッセージ卿のために、このですか? – OLDMONK

+0

あなたはあなたに接続しているすべての人にブロードキャストします。それが働いていない場合はそれを試してみてください、私に知らせてください。 –

+0

OK私はそれを試してみます... – OLDMONK

関連する問題