我在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模板中进一步了解神秘的内置套接字消息吗?
Blazor如何使用Websockets(通过SignalR)在客户端部分和服务器部分之间传递信息。这是平台整个架构的基础。它可以回退到http long-polling,但是不建议这样做。请参阅https://docs.microsoft.com/zh-cn/aspnet/core/blazor/host-and-deploy/server?view=aspnetcore-3.1#signalr-configuration。
我怀疑您是否还需要一个特定的单独的Websocket或Signalr实现(除非它连接到与Blazor应用程序不同的其他服务器/应用程序)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句