110,571
社区成员
发帖
与我相关
我的任务
分享
public HttpResponseMessage Comm(string ticket)
{
if (HttpContext.Current.IsWebSocketRequest)
{
HttpContext.Current.AcceptWebSocketRequest(OfflineMessage);
}
return new HttpResponseMessage(HttpStatusCode.SwitchingProtocols);
}
/// <summary>
/// 发送离线消息
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
private async Task OfflineMessage(AspNetWebSocketContext context)
{
WebSocket socket = context.WebSocket;
if (!httpResult.Result)
{
//当前用户不存在or失效(记录错误)
return;
}
string userGuid = new SSOHelper().GetUserGUID();
try
{
if (!IsExist(userGuid))
{
RemoveUser(userGuid);
AddUser(userGuid, socket);
}
string result = new MessageBLL().GetMessage(userGuid);
if (!string.IsNullOrEmpty(result))
{
//将消息推送到客户端
await socket.SendAsync(new ArraySegment<byte>(Encoding.UTF8.GetBytes(result)), WebSocketMessageType.Text, true, CancellationToken.None);
//SendMessageSuccess(result);
}
while (true)
{
if (socket.State != WebSocketState.Open)
{
RemoveUser(userGuid);
break;
}
}
}
catch (Exception)
{
//整体异常处理移除当前用户
RemoveUser(userGuid);
//throw;
}
}