信息:尽管使用
信息:尽管使用WebSocket
标签,我在我的代码中使用MessageWebSocket
,因为我在UWP上编码。
MessageWebSocket
存在MessageReceived
事件。在初始化MessageWebSocket
时,我向该事件添加了TypedEventHandler
:
messageWebSocket.MessageReceived += new TypedEventHandler<MessageWebSocket, MessageWebSocketMessageReceivedEventArgs>(OnMessageRecieved);
在使用名为SendData()
的方法发送数据之后,我期望MessageReceived
事件被触发。但它不会,我不知道为什么。
SendData()
方法:
private async void SendData(DataWriter dataWriter)
{
try
{
_evaLogger.Info("Trying to send data...");
IBuffer buffer = dataWriter.DetachBuffer();
await messageWebSocket.OutputStream.WriteAsync(buffer);
_evaLogger.Info("Data was sent");
}
catch (Exception e)
{
_evaLogger.Error(e.Message, e);
}
}
如果没有发送数据,MessageWebSocket
何时接收数据?
我知道问题出在哪里了。服务器期望得到一个文本,而不是我发送数据到服务器。下面是发送文本的解决方案:
private async Task SendData(DataWriter dataWriter)
{
try
{
_evaLogger.Info("Trying to send data...");
await dataWriter.StoreAsync();
_evaLogger.Info("Data was sent");
}
catch (Exception e)
{
_evaLogger.Error(e.Message, e);
}
}
将MessageType设置为Utf8:
也很重要messageWebsocket.Control.MessageType = SocketMessageType.Utf8;