2012-01-10 20 views
2

ChromeリモートデバッグとC#を使用して の目標をアーカイブしようとしています。 ブラウザウィンドウをリモートで制御する小さなアプリケーションを作成しています。現在、プロトタイプ はブラウザと接続し、利用可能なページのリストを取得し、 WebSocket接続を確立します。Chrome DevTools:リモートDOMの変更

  1. スタートchrome.exe --remote-デバッグポート= 9123
  2. コネクWSへ:// localhostを:9123 /デベロッパーツール/ページ/ 1および送信:

    request: { "id": 1, "method": "DOM.setOuterHTML", "params": {"nodeId": 1, "outerHTML": ""}} 
    

間違っていますが、エラーは返されません。

コード:

  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); 
     } 
    } 

コマンドで私を助けてもらえたデータは、WebSocketをストリームに送信しているどのように

 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); 
     } 

構文とトラブルシューティング 問題...

おかげで、

アレックス

答えて

0

私のアドバイスは、あなたが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 
} 
関連する問題