【文件属性】:
文件名称:Microsoft.AspNet.SignalR.2.4.0 Microsoft.AspNet.SignalR.Core.2.4.0
文件大小:479KB
文件格式:ZIP
更新时间:2022-04-16 02:33:19
Signal c# .net asp.ne websoc
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
namespace SignalR.通讯
{
public class iHub : iHubBase
{
public override Task OnConnected()
{
// 查询用户
var user = 自我意识.你们.SingleOrDefault(u => u.ContextId == Context.ConnectionId);
if (user != null) return base.OnConnected();
user = new 线程(Context.ConnectionId);
user.目的 += User_目的事件;
自我意识.你们.Add(user);
Clients.Client(Context.ConnectionId).addMessage("请输入用户姓名 ", Context.ConnectionId);
return base.OnConnected();
}
private void User_目的事件(object sender, 目的事件参数 e)
{
var user = (线程)sender;
if (e.类型 == 目的事件类型.说话)
{
if (user != null)
{
Clients.Client(user.ContextId).addMessage("电脑说:" + e.参一+ e.参二, user.ContextId);
}
}
else if (e.类型 == 目的事件类型.学习 || e.类型 == 目的事件类型.认知)
{
Clients.Client(user.ContextId).doclass(e.参一, e.参二);
}
else if (e.类型 == 目的事件类型.意识)
{
Clients.Client(user.ContextId).addIdea(e.参一, e.参二);
}
}
///
/// 获取用户名和自己的唯一编码
///
public void GetName(string 姓名)
{
// 查询用户。
var user = 自我意识.你们.SingleOrDefault(u => u.ContextId == Context.ConnectionId);
if (user != null)
{
user.姓名 = 姓名;
Clients.Client(Context.ConnectionId).showNameAndId(user.姓名, Context.ConnectionId);
//读取用户个性数据
}
GetOnlineUserList();
}
public override Task OnReconnected()
{
// 查询用户
var user = 自我意识.你们.SingleOrDefault(u => u.ContextId == Context.ConnectionId);
if (user != null) return base.OnReconnected();
user = new 线程(Context.ConnectionId);
user.目的 += User_目的事件;
自我意识.你们.Add(user);
//自动重新登陆
Clients.Client(Context.ConnectionId).addMessage("重新连接。。。 ", Context.ConnectionId);
GetOnlineUserList();
return base.OnReconnected();
}
///
/// 重写断开连接事件
/// 用户断开连接后,需要移除在线人们
///
///
///
public override Task OnDisconnected(bool stopCalled)
{
var user = 自我意识.你们.FirstOrDefault(u => u.ContextId == Context.ConnectionId);
//判断用户是否存在,存在则删除
if (user != null)
{
自我意识.你们.Remove(user);
}
//更新所有用户的列表
GetOnlineUserList();
return base.OnDisconnected(stopCalled);
}
///
/// 获取所有在线用户
///
public void GetOnlineUserList()
{
// var item = from a in 自我意识.人们 select new { a.印象.姓名, a.ContextId };
//var jsondata = JsonConvert.SerializeObject(item.ToList());
// Clients.All.getOnlineUserlist(jsondata);// 调用客户端的getOnlineUserlist来获得在线人们
}
///
/// 发送消息
///
///
发送给用户的ContextId
///
发送的消息内容
public void SendMessage(string contextId, string message)
{
线程 你 = 自我意识.你们.FirstOrDefault(u => u.ContextId == Context.ConnectionId);
/*
// 判断用户是否存在,存在则发送
if (user != null)
{
// 1V1 聊天,需要把消息往这2个客户端发送
// 给指定用户发送,把自己的ID传过去
// Clients.Client(contextId).addMessage(message + " " + DateTime.Now, Context.ConnectionId);
// 给自己发送,把用户的ID传给自己
Clients.Client(Context.ConnectionId).addMessage(message + " " + DateTime.Now, contextId);
}
else
{
// Clients.Client(Context.ConnectionId).showMessage("该用户已离线");
}
*/
if (你 == null)
{
//重新连接
}
if (你.姓名.Equals(string.Empty))
{
GetName(message);
Clients.Client(Context.ConnectionId).addMessage("用户" + 你.姓名 + "你好", contextId);
}
else
{
Clients.Client(Context.ConnectionId).addMessage(你.姓名 + ":" + message + " " + DateTime.Now, contextId);
//开始正式聊天
你.输入(message);
}
}
}
}
【文件预览】:
Microsoft.AspNet.SignalR.2.4.0
----Microsoft.AspNet.SignalR.2.4.0.nupkg(21KB)
----.signature.p7s(18KB)
Microsoft.AspNet.SignalR.Core.2.4.0
----lib()
--------net45()
----.signature.p7s(18KB)
----Microsoft.AspNet.SignalR.Core.2.4.0.nupkg(242KB)