我正在创建一个应该远程控制浏览器窗口的小应用程序:导航、填充表单等等。我正在尝试使用Chrome调试和C#来存档目标。目前,原型与浏览器连接,获取可用页面列表并建立WebSocket连接。
--remote-debugging-port=9123
请求:{ "id":1,“方法”:"DOM.setOuterHTML","params":{"nodeId":1,"outerHTML":“}
它看起来是错误的,但没有返回错误。
代码:
var client = new WebClient();
var pages = client.DownloadString("http://localhost:9123/json");
Console.WriteLine(pages); // works well, displays JSON with info about pages
// create WebSocket
var socket = new WebSockets.WebSocket("ws://localhost:9123/devtools/page/1");
// it should print messages to console:
socket.OnMessage += (sender, eventdata) => Console.WriteLine(eventdata);
// works well - sends and recieves handshaking messages
socket.Connect();
Console.WriteLine("\nType \"exit\" to exit.\n");
string data;
while (true)
{
Thread.Sleep(500);
Console.Write("> ");
data = Console.ReadLine();
if (data == "exit")
break;
// sends data:
socket.Send(data);
}数据如何发送到WebSocket流:
byte[] dataBuffer = Encoding.UTF8.GetBytes(data);
_wsStream.WriteByte(0x00);
_wsStream.Write(dataBuffer, 0, dataBuffer.Length);
_wsStream.WriteByte(0xff);而阅读永远不会回来:
private void Message() // started in different thread
{
while (_readyState == WsState.Open)
{
string data = Receive(); // does _wsStream.ReadByte(); and stops on it forever
var handler = OnMessage;
if (null != handler && data != null)
handler(this, data);
}
}请你帮我处理一下命令语法和疑难解答.
谢谢,
亚历克斯
发布于 2017-02-21 04:30:29
我建议您使用WebSocket4Net NuGet包。
using WebSocket4Net;
//Create new socket connection
WebSocket socket = new WebSocket(tab.webSocketDebuggerUrl);
socket.MessageReceived += MessageReceived;
socket.Open();
socket.Send("String to send");
private static void Ss_MessageReceived(object sender, WebSocket4Net.MessageReceivedEventArgs e)
{
//Handle here response from server
}https://stackoverflow.com/questions/8806975
复制相似问题