搜索

查看: 3035|回复: 11

[ASP.NET] 在Asp.net core项目中使用WebSocket

[复制链接]
发表于 2023-5-4 11:33:21 | 显示全部楼层 |阅读模式
Editor 2023-5-4 11:33:21 3035 11 看全部
今天小试了一下在Asp.net core中使用websocket,这里记录一下:
在 Startup 类的 Configure 方法中添加 WebSocket 中间件。
app.UseWebSockets();
它也可以传入一些参数
app.UseWebSockets(new WebSocketOptions()
{
    KeepAliveInterval = TimeSpan.FromSeconds(120),
    ReceiveBufferSize = 4 * 1024
});
添加WebSocket中间件的处理函数:
async Task WebSocketMiddleware(HttpContext context, Func next)
{
    //这里监听的是 /ws 作为地址
    if (context.Request.Path != "/ws")
    {
        await next();
        return;
    }
                                                                                       
    if (!context.WebSockets.IsWebSocketRequest)
    {
        context.Response.StatusCode = 400;
        return;
    }
    WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
    await Echo(context, webSocket);
}
在Startup 类的 Configure函数中应用该中间件。
app.Use(WebSocketMiddleware);
最后再来完成我们的WebScoket功能函数Echo
async Task Echo(HttpContext context, WebSocket webSocket)
{
    var buffer = new byte[1024 * 4];
    WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);
    while (!result.CloseStatus.HasValue)
    {
        await webSocket.SendAsync(new ArraySegment(buffer, 0, result.Count),
          result.MessageType, result.EndOfMessage, CancellationToken.None);
        result = await webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);
    }
    await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
}
到此一个简单的websocket应用就完成了,我们可以随便找一个测试webscoket的程序或在线网页测试一下了。

2022827165702709.png

2022827165702709.png


最后需要说明一下的时,本身asp.net core的websocket是可以在win7下跑的(来自于Kestrel内核的支持),但win7下的iis是不支持websocket反向代理的,因此如果在win7下开发或测试的时候,不要用iis来反向代理asp.net core程序。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对知鸟论坛的支持。如果你想了解更多相关内容请查看下面相关链接
回复

使用道具 举报

发表于 2023-6-29 09:52:37 | 显示全部楼层
胡37 2023-6-29 09:52:37 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 19:00:59 | 显示全部楼层
123456809 2023-6-29 19:00:59 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-6-29 23:21:37 | 显示全部楼层
哈哈SE7 2023-6-29 23:21:37 看全部
这东西我收了!谢谢楼主!知鸟论坛真好!
回复

使用道具 举报

发表于 2023-6-30 09:05:04 | 显示全部楼层
贰十岁装成熟装s 2023-6-30 09:05:04 看全部
楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
回复

使用道具 举报

发表于 2023-6-30 09:35:53 | 显示全部楼层
落败的青春阳落s 2023-6-30 09:35:53 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
回复

使用道具 举报

发表于 2023-6-30 09:39:35 | 显示全部楼层
塞翁364 2023-6-30 09:39:35 看全部
楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
回复

使用道具 举报

发表于 2023-6-30 10:03:39 | 显示全部楼层
术数古籍专卖疤 2023-6-30 10:03:39 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
回复

使用道具 举报

发表于 2023-6-30 10:17:42 | 显示全部楼层
我的苦恼冉 2023-6-30 10:17:42 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
回复

使用道具 举报

发表于 2023-6-30 15:01:29 | 显示全部楼层
知足常乐77 2023-6-30 15:01:29 看全部
这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

  • 您可能感兴趣
点击右侧快捷回复 【请勿灌水】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

RSS订阅| SiteMap| 小黑屋| 知鸟论坛
联系邮箱E-mail:zniao@foxmail.com
快速回复 返回顶部 返回列表