62,072
社区成员
发帖
与我相关
我的任务
分享
// GET: api/GameRoom
public HttpResponseMessage Get()
{
if (HttpContext.Current.IsWebSocketRequest)
{
HttpContext.Current.AcceptWebSocketRequest(ProcessWSChat);
}
return new HttpResponseMessage(HttpStatusCode.SwitchingProtocols);
}
private async Task ProcessWSChat(AspNetWebSocketContext arg)
{
WebSocket socket = arg.WebSocket;
while (true)
{
try
{
ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[1024]);
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
if (socket.State == WebSocketState.Open)
{
var message = Encoding.UTF8.GetString(buffer.Array, 0, result.Count);
}
}
catch (Exception ex)
{
if (ex.HResult == -2147024858)
{
if (_RoomData != null)
{
//进行数据发送
SocketAction.Whole(_RoomData, "Lixian", _UserName);
//写入离线用户
_RoomData.Lixian.Add(_UserName);
_RoomUser.Socket = null;
}
return;
}
else
{
return;
}
}
}
}