Browse Source

Send connect message if client is connected.

Cheng Zhao 10 years ago
parent
commit
e3b6ea62d6
2 changed files with 16 additions and 2 deletions
  1. 15 2
      atom/browser/node_debugger.cc
  2. 1 0
      atom/browser/node_debugger.h

+ 15 - 2
atom/browser/node_debugger.cc

@@ -24,6 +24,8 @@ namespace {
 // taken by gin, blink and node, using 2 is a safe option for now.
 const int kIsolateSlot = 2;
 
+const char* kContentLength = "Content-Length";
+
 }  // namespace
 
 NodeDebugger::NodeDebugger(v8::Isolate* isolate)
@@ -105,13 +107,23 @@ void NodeDebugger::OnMessage(const std::string& message) {
 
 void NodeDebugger::SendMessage(const std::string& message) {
   if (accepted_socket_) {
-    std::string header = base::StringPrintf("Content-Length: %d\r\n\r\n",
-                                            static_cast<int>(message.size()));
+    std::string header = base::StringPrintf(
+        "%s: %d\r\n\r\n", kContentLength, static_cast<int>(message.size()));
     accepted_socket_->Send(header);
     accepted_socket_->Send(message);
   }
 }
 
+void NodeDebugger::SendConnectMessage() {
+  accepted_socket_->Send(base::StringPrintf(
+      "Type: connect\r\n"
+      "V8-Version: %s\r\n"
+      "Protocol-Version: 1\r\n"
+      "Embedding-Host: %s\r\n"
+      "%s: 0\r\n",
+      v8::V8::GetVersion(), "Atom-Shell", kContentLength), true);
+}
+
 // static
 void NodeDebugger::DebugMessageHandler(const v8::Debug::Message& message) {
   NodeDebugger* self = static_cast<NodeDebugger*>(
@@ -132,6 +144,7 @@ void NodeDebugger::DidAccept(net::StreamListenSocket* server,
   }
 
   accepted_socket_ = socket.Pass();
+  SendConnectMessage();
 }
 
 void NodeDebugger::DidRead(net::StreamListenSocket* socket,

+ 1 - 0
atom/browser/node_debugger.h

@@ -28,6 +28,7 @@ class NodeDebugger : public net::StreamListenSocket::Delegate {
   void CloseSession();
   void OnMessage(const std::string& message);
   void SendMessage(const std::string& message);
+  void SendConnectMessage();
 
   static void DebugMessageHandler(const v8::Debug::Message& message);