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

标签 c#-4.0 windows-phone-8 websocket

网络套接字是我的同事用 javascript 编写的。我成功连接了。首先,我必须使用测试帐户登录应用程序。我必须通过 json 发送电子邮件和密码。我已经使用 NuGet 安装了 Json.Net 数据包。

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

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

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

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

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

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

顺便说一句,我对 Web 套接字还很陌生,我使用了 ASP.NET WEB API 2 中的 http 协议(protocol)。

最佳答案

我对 Windows Phone 8 不了解,但根据您粘贴的代码,它似乎与常规 .NET ClientWebSocket 类似,因此这里有一些示例:

public static Task SendString(ClientWebSocket ws, String data, CancellationToken cancellation)
{
    var encoded = Encoding.UTF8.GetBytes(data);
    var buffer = new ArraySegment<Byte>(encoded, 0, encoded.Length);
    return ws.SendAsync(buffer, WebSocketMessageType.Text, true, cancellation);
}

public static async Task<String> ReadString(ClientWebSocket ws)
{
    ArraySegment<Byte> buffer = new ArraySegment<byte>(new Byte[8192]);

    WebSocketReceiveResult result = null;

    using (var ms = new MemoryStream())
    {
        do
        {
            result = await ws.ReceiveAsync(buffer, CancellationToken.None);
            ms.Write(buffer.Array, buffer.Offset, result.Count);
        }
        while (!result.EndOfMessage);

        ms.Seek(0, SeekOrigin.Begin);

        using (var reader = new StreamReader(ms, Encoding.UTF8))
            return reader.ReadToEnd();
    }
}

如果某些内容无法编译或存在于 WP8 中,只需找到等效的内容即可。

关于c#-4.0 - 如何使用 ClientWebSocket 类通过 Windows Phone 8 上的 Web 套接字发送/接收消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24450109/

相关文章:

c# - 如何在 Windows Phone 8 中覆盖不同分辨率的样式?

c# - 如何避免在应用程序处于事件状态和下载文件时阻塞屏幕?

javascript - 客户端通过 websocket 连接从后端服务器数据库表检索数据

c# - 如何运行一组任务,将它们全部暂停,更新数据表,然后允许任务继续使用更新后的数据表?

javascript - 适用于 Windows Phone 的 Cordova Visual Studio 2012 Express : Open External PDF URL

string - 如何将 ArrayList 转换为字符串 C#

ios - iOS 中的 Websocket 连接问题?

javascript - 我的socket.io和node.js代码无法正常工作-为什么?

c# - 如何在asp.net中提取jquery.ajax序列化表单参数

c# - 动态、linq 和 Select()