diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc
index a0b684e..b44498d 100644
--- a/buffet/device_registration_info.cc
+++ b/buffet/device_registration_info.cc
@@ -326,12 +326,24 @@
                            "Access token unavailable");
     return false;
   }
-
   access_token_expiration_ = base::Time::Now() +
                              base::TimeDelta::FromSeconds(expires_in);
-
   LOG(INFO) << "Access token is refreshed for additional " << expires_in
             << " seconds.";
+
+  // If no MessageLoop assume we're in unittests.
+  if (base::MessageLoop::current()) {
+    std::unique_ptr<XmppConnection> connection(new XmppConnection());
+    CHECK(connection->Initialize()) << "Failed to connect to XMPP server";
+    xmpp_client_.reset(new XmppClient(device_robot_account_, access_token_,
+                                      std::move(connection)));
+    CHECK(base::MessageLoopForIO::current()->WatchFileDescriptor(
+        xmpp_client_->GetFileDescriptor(), true,
+        base::MessageLoopForIO::WATCH_READ, &fd_watcher_, this))
+        << "Failed to watch XMPP file descriptor";
+    xmpp_client_->StartStream();
+  }
+
   return true;
 }
 
diff --git a/buffet/device_registration_info.h b/buffet/device_registration_info.h
index 31cc508..96979dc 100644
--- a/buffet/device_registration_info.h
+++ b/buffet/device_registration_info.h
@@ -13,12 +13,14 @@
 #include <base/callback.h>
 #include <base/macros.h>
 #include <base/memory/weak_ptr.h>
+#include <base/message_loop/message_loop.h>
 #include <base/time/time.h>
 #include <chromeos/data_encoding.h>
 #include <chromeos/errors/error.h>
 #include <chromeos/http/http_transport.h>
 
 #include "buffet/storage_interface.h"
+#include "buffet/xmpp/xmpp_client.h"
 
 namespace base {
 class Value;
@@ -38,7 +40,7 @@
 extern const char kErrorDomainGCDServer[];
 
 // The DeviceRegistrationInfo class represents device registration information.
-class DeviceRegistrationInfo {
+class DeviceRegistrationInfo : public base::MessageLoopForIO::Watcher {
  public:
   // This is a helper class for unit testing.
   class TestHelper;
@@ -50,7 +52,17 @@
       const std::shared_ptr<chromeos::http::Transport>& transport,
       const std::shared_ptr<StorageInterface>& state_store);
 
-  ~DeviceRegistrationInfo();
+  ~DeviceRegistrationInfo() override;
+
+  void OnFileCanReadWithoutBlocking(int fd) override {
+    if (xmpp_client_ && xmpp_client_->GetFileDescriptor() == fd) {
+      xmpp_client_->Read();
+    }
+  }
+
+  void OnFileCanWriteWithoutBlocking(int fd) override {
+    LOG(FATAL) << "No write watcher is configured";
+  }
 
   // Returns the authorization HTTP header that can be used to talk
   // to GCD server for authenticated device communication.
@@ -179,6 +191,9 @@
   std::unique_ptr<base::DictionaryValue> BuildDeviceResource(
       chromeos::ErrorPtr* error);
 
+  std::unique_ptr<XmppClient> xmpp_client_;
+  base::MessageLoopForIO::FileDescriptorWatcher fd_watcher_;
+
   std::string client_id_;
   std::string client_secret_;
   std::string api_key_;
@@ -187,17 +202,17 @@
   std::string device_robot_account_;
   std::string oauth_url_;
   std::string service_url_;
-
-  // Transient data
-  std::string access_token_;
-  base::Time access_token_expiration_;
-  std::string ticket_id_;
   std::string device_kind_;
   std::string name_;
   std::string display_name_;
   std::string description_;
   std::string location_;
 
+  // Transient data
+  std::string access_token_;
+  base::Time access_token_expiration_;
+  std::string ticket_id_;
+
   // HTTP transport used for communications.
   std::shared_ptr<chromeos::http::Transport> transport_;
   // Serialization interface to save and load device registration info.
diff --git a/buffet/xmpp/xmpp_connection.cc b/buffet/xmpp/xmpp_connection.cc
index 8799493..38e99e3 100644
--- a/buffet/xmpp/xmpp_connection.cc
+++ b/buffet/xmpp/xmpp_connection.cc
@@ -56,12 +56,12 @@
     return false;
   }
   *msg = std::string{buffer, static_cast<size_t>(bytes)};
-  VLOG(1) << "READ: (" << msg->size() << ")" << *msg;
+  LOG(INFO) << "Read: (" << msg->size() << ")" << *msg;
   return true;
 }
 
 bool XmppConnection::Write(const std::string& msg) const {
-  VLOG(1) << "WRITE: (" << msg.size() << ")" << msg;
+  LOG(INFO) << "Write: (" << msg.size() << ")" << msg;
   if (!base::WriteFileDescriptor(fd_, msg.c_str(), msg.size())) {
     LOG(WARNING) << "Failure writing";
     return false;
