C# 向所有连接的客户端发送广播弹出消息
我正在用C#在ASP.NET WebForms中构建(仍在学习)一个web应用程序。我们有一个集中的数据库,所有客户端都通过相同的静态IP连接到数据库。每个客户端都有自己的 唯一的办公室ID。我们有16个办公室,每个办公室都有自己的办公室ID。我们每天都用新版本更新新功能。而不是发送聊天信息 对于个人客户,关于新的变更/更新/功能,我们是否可以像我提到的所有办公室一样将其作为广播消息发送 有一个OfficeId=14的公司办公室。因此,当其他办公室的用户登录时,他/她应该会看到弹出的通知消息 关于更改。是否可以制作一个表单来输入有关更改的详细信息,以及corporte office的用户保存该表单时,它会显示在的索引页中 所有的客户 我在这方面做了很多研究,但无法得到一个可靠的解释。对于这里的所有专家来说,这可能是一个重复的或蹩脚的问题 请耐心等待。检查此链接 从ChatHub类中选择并使用以下代码C# 向所有连接的客户端发送广播弹出消息,c#,jquery,asp.net,ajax,signalr,C#,Jquery,Asp.net,Ajax,Signalr,我正在用C#在ASP.NET WebForms中构建(仍在学习)一个web应用程序。我们有一个集中的数据库,所有客户端都通过相同的静态IP连接到数据库。每个客户端都有自己的 唯一的办公室ID。我们有16个办公室,每个办公室都有自己的办公室ID。我们每天都用新版本更新新功能。而不是发送聊天信息 对于个人客户,关于新的变更/更新/功能,我们是否可以像我提到的所有办公室一样将其作为广播消息发送 有一个OfficeId=14的公司办公室。因此,当其他办公室的用户登录时,他/她应该会看到弹出的通知消息 关
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”)}