首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向所有连接的客户端发送广播弹出消息

向所有连接的客户端发送广播弹出消息
EN

Stack Overflow用户
提问于 2016-04-30 14:36:18
回答 1查看 1.7K关注 0票数 2

我正在使用C#.We构建(仍在学习) ASP.NET WebForms中的web应用程序有一个集中的数据库,所有客户端都通过相同的静态IP.Each连接到数据库客户端有自己独特的办公室ID.We有16个办公室,每个办公室都有自己的办公室ID.Every日我们更新新功能与新的build.Instead发送聊天消息到个人客户端关于新的变化/更新/功能,我们可以使它作为广播消息发送,像我提到的所有办公室有一个企业办公室的OfficeId=14.So从其他办公室的用户登录的时刻,他/她应该看到关于changes.Is的弹出通知消息,例如,可以使用表单输入有关更改的详细信息,当来自公司办公室的用户保存它时,它会显示在所有客户的索引页面中?

我在这方面做了很多研究,但无法得到一个可靠的explanation.This对于这里所有的专家来说,这可能是一个重复或蹩脚的问题,请容忍我。

EN

回答 1

Stack Overflow用户

发布于 2016-04-30 16:01:46

检查此链接ASP.Net SignalR: Building a Simple Real-Time Chat Application

从ChatHub类并使用以下代码。

代码语言:javascript
运行
复制
 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

代码语言: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>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36951632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档