微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Blazor页面会自动创建websocket连接?

如何解决为什么Blazor页面会自动创建websocket连接?

我在asp.net core 3.1中创建了一个Blazor项目,并添加了API支持,现在正在向其中添加Websocket。

我遵循了本教程。

https://dotnetplaybook.com/which-is-best-websockets-or-signalr/

尽管Websocket中间件和Everyting都可以工作,但是当我将其集成到Blazor项目中时,我遇到了问题

Hello from 2nd Request Delegate - No WebSocket
WebSocketServerConnectionManager-> AddSocket: WebSocket added with ID: 18a403b3-cbab-4523-b25d-00cddd4f05d5
Receive->Text
Message: {"protocol":"blazorpack","version":1}
Unhandled exception. Receive->Close on: 18a403b3-cbab-4523-b25d-00cddd4f05d5
Managed Connections: 0
Newtonsoft.Json.JsonReaderException: Additional text encountered after finished reading JSON content: . Path '',line 1,position 37.
   at Newtonsoft.Json.JsonTextReader.Read()
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType)
   at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader,Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value,Type type,JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value,JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)

显然,当我由blazor本身加载网页时,似乎已经建立了到服务器的websocket连接(即使我没有做任何事情)。

套接字消息为==> {"protocol":"blazorpack","version":1}

当然,代码没有处理这种格式,因此会出现错误(可以修复)。

但是我对这种自动套接字连接感到好奇。有人从Blazor模板中进一步了解神秘的内置套接字消息吗?

解决方法

使用Websockets(通过SignalR)是Blazor在客户端部分和服务器部分之间传递信息的方式。这是平台整个架构的基础。它可以回退到http long-polling,但是不建议这样做。参见https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/server?view=aspnetcore-3.1#signalr-configuration

我怀疑您是否还需要一个特定的单独的Websocket或Signalr实现(除非它连接到与Blazor应用程序不同的其他服务器/应用程序)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。