using Microsoft.AspNet.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace VueWebApi.Hubs
{
public class ChatHub : Hub
{
///
/// 静态用户列表
///
private IList userList = UserInfo.userList;
///
/// 用户的connectionID与用户名对照表
///
private readonly static Dictionary _connections = new Dictionary();
///
/// 发送函数,前端触发该函数给服务器,服务器在将消息发送给前端,(Clients.All.(函数名)是全体广播,另外Clients提供了组播,广播排除,组播排除,指定用户播发等等)
/// 该函数名在前端使用时一定要注意,前端调用该函数时,函数首字母一定要小写
///
/// 发起者
/// 消息接收者
/// 消息内容
public void SendByGroup(string name1, string name2, string cont)
{
//Client内为用户的id,是唯一的,SendMessage函数是前端函数,意思是服务器将该消息推送至前端
Clients.Client(_connections[name2]).SendMessage("来自用户:" + name1 + " 内容:" + cont + "" + DateTime.Now.ToString("yyyy/MM/ddhh:mm:ss") + "的消息推送!");
}
///
/// 用户上线函数
///
///
public void SendLogin(string name)
{
if (!userList.Contains(name))
{
userList.Add(name);
//这里便是将用户id和姓名联系起来
_connections.Add(name, Context.ConnectionId);
}
else
{
//每次登陆id会发生变化
_connections[name] = Context.ConnectionId;
}
//新用户上线,服务器广播该用户名
Clients.All.loginUser(userList);
}
}
public class UserInfo
{
public static IList userList = new List();
}
}