pat*_*atS 5 c# asp.net asp.net-mvc websocket
首先,我知道SignalR是最好的websocket框架,我应该使用它而不是低级实现。
但是,是否有人知道如何在控制器中正确使用websocket?我完全绿了。
任何好的教程都将非常有帮助:)
我已经尝试过这样做。
中间件
 app.UseWebSockets();
 app.Use(async (context, next) =>
 {
        var http = (HttpContext)context;
        if (http.WebSockets.IsWebSocketRequest)
        {
         WebSocket webSocket = await http.WebSockets.AcceptWebSocketAsync();     
        }
         else
         {
            await next();
         }
 });
 //thanks to next(); app.UseMvc();
控制者
[Route("ws")]
    public class MonitorController : Controller
    {
        HttpContext context;
        WebSocket socket;
        public MonitorController(IHttpContextAccessor accessor)
        {
            this.context = accessor.HttpContext;
            if (!this.context.WebSockets.IsWebSocketRequest)
                throw new InvalidOperationException("incoming request is not a websocket request");
        }
        [HttpGet]
        public IActionResult Get()
        {
            return new MonitorWaiter(Wait);
        }
        .... some code MonitorWaiter.....
本地主机:5000 / ws
GET HTTP/1.1: 
Host: localhost:5000/ws
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
在调试过程中,它进入中间件,但它跳过控制器。
非常感谢您的一些建议。
我看到可以通过将服务器添加到处理程序-> app.Use(); 来完成。并在控制器中使用一些客户端实现,但是问题仍然是当我要创建一些服务器时会发生什么?
相关文章:将WebSockets与ASP.NET Web API一起使用
我不知道这是否正确,但我认为通常应使用websocket处理程序,而不要尝试使用api控制器。
| 归档时间: | 
 | 
| 查看次数: | 1199 次 | 
| 最近记录: |