singnalr的使用

**

1 添加 singnalr**

在nuget中对singnalr添加引用 会自动生成jquery.signalR-2.1.2.js
singnalr的使用_第1张图片
*

2 添加下面代码*

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);  //调用所有连接用户

    }

客服端使用

添加引用
singnalr的使用_第2张图片




客服聊天











   
 @*//自己的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

你可能感兴趣的:(c#,singnalr)