用Aps.net做游戏服务器的可行性【WebSoket】

时光守护者 2017-11-18 02:43:22
利用Asp.net MVC Web Api 做的Websocket的服务端
用户请求Websocket连接都用过这个webApi

// 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;
}

}
}

}

这个API主要负责接受和发送数据
我不知道WEB API 是多线程的还是单线程的
是一个游戏用户调动这个API IIS就为它创建一个单独的线程吗?
这么做效率怎么样 ? 这个API主要作用就是通过WebSoket连接用户进行数据接受、发送!
...全文
268 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2017-11-20
  • 打赏
  • 举报
回复
没什么问题。 web api多个用户请求是多线程的。 效率来说,增加了async 异步,那也就没什么好说的了。
圣殿骑士18 2017-11-19
  • 打赏
  • 举报
回复
如果你只是自己玩玩,或者做非常简单的小游戏,当然可以。 如果你是要开发游戏产品,那为什么不用游戏开发的专用协议。
r00_a2lBUR 2017-11-18
  • 打赏
  • 举报
回复
感觉应该是还可以

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧