**
在nuget中对singnalr添加引用 会自动生成jquery.signalR-2.1.2.js
*
public static Dictionary users = new Dictionary();//用来用户连接的id
public void Send(string message, string name, string connectionid)
{
// 调用所有客户端的sendMessage方法
Trace.WriteLine("正在发送");
Clients.Client(connectionid).sendMessage(name, message); // 指定连接id调用单独用户的senmeeage 方法
Clients.Client(Context.ConnectionId).sendMessage(name, message);//调用自己的senmessage方法
}
public void Sends(string message, string name)
{
Trace.WriteLine(users[name]);//获取此用户的链接id
Clients.Client(users[name]).getServiceText( message); // 指定连接id调用单独用户的senmeeage 方法
}
public void load(string name)
{
#region
//HttpStaticObjectsCollection session = new HttpStaticObjectsCollection();
//string a = session[“username”].ToString();
//string sql = $"select text,datetime from [chatting] where username=’{name}’ ";//从数据库查询聊天记录
//DataTable dt = new chattingbll().listbll(sql); //从数据库中查找未读消息
//foreach (DataRow item in dt.Rows)
//{
// Clients.All.load(item["text"], item["datetime"]); //调用前端方法 进行刷新
//}
#endregion
Trace.WriteLine("正在读取");
//判断用户是否存在,否则添加集合 .
if (!users.Keys.Contains(name)) //判断是否存在该用户
{
users.Add(name, Context.ConnectionId); //将用户id存入
}
Clients.Client(Context.ConnectionId).showId(Context.ConnectionId); // 将当前用户id加入到集合中
Clients.All.get(name); //调用所有连接用户
}
客服聊天
@*//自己的name*@
XX客服支持平台
您好,请提问
发送内容不能为空
个人理解!!!:
## 服务端链接id
Context.ConnectionId 在用户第一次使用时会自动生成一个id
就是客服端调用服务端 的方法 服务端在调用客户端的方法 进行数据更新
Clients.Client() //指定单独用户
Clients.All() //指定所有用户
用法
Clients.Client(connectionid).getServiceText (name, message); // 指定连接id调用单独用户的senmeeage 方法
Clients.All().getServiceText (name, message); //调用所有用户的senmessage
senmessage 就是客户端的js中的方法
chat.client.getServiceText = function (serviceText)//将消息发送给指定用户
{
alert(serviceText);
var nodeP=doc.createElement(‘p’),
nodeSpan = doc.createElement(‘span’);
nodeP.classList.add(‘dialogue-service-contain’);
nodeSpan.classList.add(‘dialogue-text’, ‘dialogue-service-text’);
nodeSpan.innerHTML = serviceText;
nodeP.appendChild(nodeSpan);
dialogueContain.appendChild(nodeP);
dialogueContain.scrollTop = dialogueContain.scrollHeight;
}根据服务端传来的参数在去追加html代码 更新消息
最后效果 打开2个页面 就可以通讯了
前端页面引用:
https://www.cnblogs.com/youyouluo/p/6853436.html