我正在查看Create "Hello World" WebSocket example并开始尝试对此进行调整,以便通过在控制台输入的WebSocket发送自定义消息,但我在理解代码时遇到了一些问题。
我的问题是对我自己的邮件进行编码的正确方法是什么,以便根据我上面链接的答案正确发送邮件
client.Send(my-own-message);
答案 0 :(得分:1)
首先,Console.Read()
只读取一个char并返回表示此char的int。
如果要发送消息,可能需要使用返回字符串的Console.ReadLine()
。
string msg = Console.ReadLine();
client.Send(GetBytes(msg));
static byte[] GetBytes(string str)
{
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
return bytes;
}
如果包围了metters:
byte[] ascii = System.Text.Encoding.ASCII.GetBytes (msg);
byte[] utf8 = System.Text.Encoding.UTF8.GetBytes (msg);
答案 1 :(得分:1)
你应该go to the source。 Websocket规范实际上非常简单易读,它可以准确地告诉您消息的格式化。
但简而言之,假设您已经完成了建立连接的初始握手,那么Websocket框架应该包含哪些数据:
0x81
的单字节;如果邮件为二进制数据,则为0x82
(请注意,有几个浏览器不支持后者)i
应与屏蔽密钥的i%4
字节一起进行异或。)执行此操作,您已创建包含UTF8文本或原始二进制数据的有效websocket框架。如您所见,涉及几个步骤,但每个步骤都相对简单。 (再次,请检查我链接到的RFC,因为我刚刚从内存中写了所有这些,因此可能存在轻微的不准确性)