2016-04-30 3 views
2

Я создаю (все еще изучаю) веб-приложение в ASP.NET WebForms с C#. У нас есть централизованная база данных, и все клиенты подключены к базе данных через одну и ту же статическую IP.Каждый из клиентов имеет свой собственный Уникальный идентификатор офиса. У нас есть 16 офисов, каждый из которых имеет свой собственный идентификатор офиса. Каждый день мы обновляем новые функции с помощью новой сборки. Вместо отправки чат-сообщения отдельному клиенту о новых изменениях/обновлениях/features, можем ли мы отправить его в виде широковещательного сообщения, как из всех офисов, о которых я упомянул , есть корпоративный офис с OfficeId = 14. В тот момент, когда пользователь из другого офиса входит в систему, он должен увидеть поп- сообщение об уведомлении об изменениях. Можно указать слово, чтобы ввести подробности о th e изменения и момент, когда пользователь из офиса corporte сохраняет его, он показывает на индексной странице все клиенты?Отправить сообщение POP-UP для всех подключенных клиентов

Я сделал много исследований по этому вопросу, но не смог получить подробное объяснение. Это может быть дублирующий или хромой вопрос для всех экспертов, пожалуйста, медведь со мной.

ответ

2

Проверить ссылку ASP.Net SignalR: Building a Simple Real-Time Chat Application

из класса ChatHub и использовании следующего кода.

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 сэр я придав ему try..will пусть вы знаете – OLDMONK

Смежные вопросы