c#-4.0 – 如何使用ClientWebSocket类通过Windows Phone 8上的Web套接字发送/接收消息?

前端之家收集整理的这篇文章主要介绍了c#-4.0 – 如何使用ClientWebSocket类通过Windows Phone 8上的Web套接字发送/接收消息?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Web套接字是由我的同事用 javascript编写的.我设法连接.首先,我必须使用测试帐户登录应用程序.我必须通过json发送电子邮件和密码.我使用NuGet安装了Json.Net数据包.

我在我的研究中发现的一些代码是这样的,但我不明白如何使用该段发送我的数据.

  1. var buffer = new byte[1024];
  2. var segment = new ArraySegment<byte>(buffer);
  3. webSocket.SendAsync(segment,WebSocketMessageType.Text,true,CancellationToken.None);

当然,我可以使用一个对象

  1. User user=new User();
  2. user.Email="bla@bla.com";
  3. user.Password="pass";
  4. string json = JsonConvert.SerializeObject(user);

但它没有任何用处,因为SendAsync方法只接受段上的字节类型.

我想要的只是发送数据,如果登录成功,我应该收到有关用户的其他数据(采用Json格式).

作为旁注,我对Web套接字很新,我使用ASP.NET WEB API 2中的http协议.

解决方法

我不知道Windows Phone 8,但是你粘贴的代码看起来与普通的.NET ClientWebSocket类似,所以这里有一些例子:
  1. public static Task SendString(ClientWebSocket ws,String data,CancellationToken cancellation)
  2. {
  3. var encoded = Encoding.UTF8.GetBytes(data);
  4. var buffer = new ArraySegment<Byte>(encoded,encoded.Length);
  5. return ws.SendAsync(buffer,cancellation);
  6. }
  7.  
  8. public static async Task<String> ReadString(ClientWebSocket ws)
  9. {
  10. ArraySegment<Byte> buffer = new ArraySegment<byte>(new Byte[8192]);
  11.  
  12. WebSocketReceiveResult result = null;
  13.  
  14. using (var ms = new MemoryStream())
  15. {
  16. do
  17. {
  18. result = await ws.ReceiveAsync(buffer,CancellationToken.None);
  19. ms.Write(buffer.Array,buffer.Offset,result.Count);
  20. }
  21. while (!result.EndOfMessage);
  22.  
  23. ms.Seek(0,SeekOrigin.Begin);
  24.  
  25. using (var reader = new StreamReader(ms,Encoding.UTF8))
  26. return reader.ReadToEnd();
  27. }
  28. }

如果WP8中没有编译或存在某些内容,只需查找等效内容即可.

猜你在找的C#相关文章