uno-platform - 如何使用 Uno Platform WebAssembly 连接到本地 WebSocket 服务器
问题描述
以下代码适用于 UWP,但不适用于 WASM。我确实在 WASM 头上安装了 Uno.Wasm.WebSockets 包。
_webSocketConnectionCTS = new CancellationTokenSource();
using (_webSocket = new ClientWebSocket())
{
try
{
await _webSocket.ConnectAsync(new Uri(address), _webSocketConnectionCTS.Token);
await Receive(_webSocket, _webSocketConnectionCTS.Token);
}
catch (Exception ex)
{
Console.WriteLine("Failed to connect to WebSocket server: " + ex.Message);
}
}
连接时抛出异常:“值不能为空”,但两个参数都不为空。
解决方案
该类ClientWebSocket
在 Uno 的当前版本中不可用,因为基础类没有为其提供实现。您可以改用该Uno.Wasm.WebSockets
包,它使用与ClientWebSocket
.
这是文档中的一个示例:
var ws = new Uno.Wasm.WebSockets.WasmWebSocket();
// Connect to a simple echo WebSocket server
await ws.ConnectAsync(new Uri("wss://echo.websocket.org"), CancellationToken.None);
Console.WriteLine("Program: Connected!");
// Send some data
var data = new ArraySegment<byte>(Encoding.UTF8.GetBytes("Hello websocket !"));
await ws.SendAsync(data, System.Net.WebSockets.WebSocketMessageType.Binary, false, CancellationToken.None);
Console.WriteLine("Program: Sent!");
// Read the echo back
var buffer = new byte[1024];
var received = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
var receivedString = Encoding.UTF8.GetString(buffer, 0, received.Count);
Console.WriteLine($"Received {received.Count} bytes: {receivedString}");
推荐阅读
- flutter - 在 Flutter 中无法将图像保存到设备中?
- javascript - 如何在没有大型库的情况下将 pdf 转换为 react js 中的图片?
- python - 突变后动态更新依赖对象属性
- windows - 如何使用格式工厂为 NetBeans 制作图标
- reactjs - 获取类型错误无法解构属性,因为它在 React 中未定义
- dll - 为什么我的 Winmm.dll 激活时没有声音
- bert-language-model - 自定义 Bert 和未解析的 self.init_weights()
- reactjs - 如何让类型检查与 React forwardRef 一起使用
- objective-c - NSMutableDictionary 内容对象符合 NSCopying 协议
- opentsdb - Bosun 通知未触发