Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向所有连接的客户端发送广播弹出消息_C#_Jquery_Asp.net_Ajax_Signalr - Fatal编程技术网

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

C# 向所有连接的客户端发送广播弹出消息,c#,jquery,asp.net,ajax,signalr,C#,Jquery,Asp.net,Ajax,Signalr,我正在用C#在ASP.NET WebForms中构建(仍在学习)一个web应用程序。我们有一个集中的数据库,所有客户端都通过相同的静态IP连接到数据库。每个客户端都有自己的 唯一的办公室ID。我们有16个办公室,每个办公室都有自己的办公室ID。我们每天都用新版本更新新功能。而不是发送聊天信息 对于个人客户,关于新的变更/更新/功能,我们是否可以像我提到的所有办公室一样将其作为广播消息发送 有一个OfficeId=14的公司办公室。因此,当其他办公室的用户登录时,他/她应该会看到弹出的通知消息 关

我正在用C#在ASP.NET WebForms中构建(仍在学习)一个web应用程序。我们有一个集中的数据库,所有客户端都通过相同的静态IP连接到数据库。每个客户端都有自己的 唯一的办公室ID。我们有16个办公室,每个办公室都有自己的办公室ID。我们每天都用新版本更新新功能。而不是发送聊天信息 对于个人客户,关于新的变更/更新/功能,我们是否可以像我提到的所有办公室一样将其作为广播消息发送 有一个OfficeId=14的公司办公室。因此,当其他办公室的用户登录时,他/她应该会看到弹出的通知消息 关于更改。是否可以制作一个表单来输入有关更改的详细信息,以及corporte office的用户保存该表单时,它会显示在的索引页中 所有的客户

我在这方面做了很多研究,但无法得到一个可靠的解释。对于这里的所有专家来说,这可能是一个重复的或蹩脚的问题 请耐心等待。

检查此链接

从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);
    }

}
公共类聊天中心:中心
{
静态ConcurrentDictionary dic=新ConcurrentDictionary();
公共无效发送(字符串名称、字符串消息)
{
Clients.All.broadcastMessage(名称、消息);
}
公共无效通知(字符串名称、字符串id)
{
if(dic.ContainsKey(名称))
{
Clients.Caller.differentName();
}
其他的
{
dic.TryAdd(姓名、身份证);
foreach(dic中的KeyValuePair条目)
{
Clients.Caller.online(entry.Key);
}
客户。其他。输入(名称);
}
}
公共覆盖任务OnDisconnected()
{
var name=dic.FirstOrDefault(x=>x.Value==Context.ConnectionId.ToString());
字符串s;
dic.TryRemove(name.Key,out s);
返回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>

$(函数(){
showmodalUser昵称();
});
函数showmodalUser昵称(){
$(“#对话框”)。对话框({
莫代尔:是的,
按钮:{
Ok:函数(){
$(此).dialog(“关闭”);
startChartHub();
}
}
});
}
函数startChartHub(){
var chat=$.connection.chatHub;
//获取用户名。
$('昵称').val($('尼克').val());
chat.client.differentitname=函数(名称){
showmodalUser昵称();
返回false;
//提示输入不同的用户名
$('昵称').val($('尼克').val());
chat.server.notify($('#昵称').val(),$.connection.hub.id);
};
chat.client.online=函数(名称){
//更新用户列表
if(name=$('#昵称').val())
$(“#onlineusers”).append('You:'+name+'');
否则{
$(“#onlineusers”).append(“”+name+“”);
}
};
chat.client.enters=函数(名称){
$(“#聊天记录”).append(“+name+”加入对话);
$(“#onlineusers”).append(“”+name+“”);
};
//创建一个中心可以调用以广播聊天信息的功能。
chat.client.broadcastMessage=函数(名称、消息){
//解读笑脸
message=message.replace(“:)”和“);
message=message.replace(“lol”和“”);
message=message.replace(“:o”,即“”);
//显示消息
$('#chatlog')。追加(''+name+'':''+message+'');
};
chat.client.disconnected=函数(名称){
//有人离开页面时呼叫
$(“#聊天记录”).append(“+name+”离开对话”);
$('#onlineusers div')。删除(“:contains('“+name+”)”);
}
//启动连接。
$.connection.hub.start().done(函数(){
//调用服务器的notify方法
chat.server.notify($('#昵称').val(),$.connection.hub.id);
$('#btnsend')。单击(函数(){
//在集线器上调用Send方法。
chat.server.send($('#昵称').val(),$('#message').val());
//清除文本框并重置下一条注释的焦点。
$('#message').val('.focus();
});
});
}
在线用户

这是广播消息吗,先生?它将广播给所有连接到您的应用程序的人。试一下,如果它不起作用,那就告诉我。好的,先生,我正在试一下。会让你知道它不起作用的,先生。发送按钮不起作用。你有没有在你的代码@section scripts{@scripts.Render(“~/scripts/jquery-ui-1.9.2.min.js”)@scripts.Render(“~/scripts/jquery.signalR-1.0.1.min.js”)中添加这一行@Scripts.Render(“/signalr/hubs”)}