Commit 355e5e6

mo <mo.khan@gmail.com>
2018-04-28 14:42:40
start a socket server.
1 parent f8b2d71
lib/del/robot.rb
@@ -1,6 +1,6 @@
 module Del
   class Robot
-    attr_reader :connection, :router
+    attr_reader :connection, :router, :server
     attr_reader :users, :rooms
     attr_reader :jid, :name
 
@@ -11,12 +11,13 @@ module Del
       @router = configuration.router
       @users = configuration.users
       @rooms = configuration.rooms
+      @server = SocketServer.new
     end
 
     def get_funky!
-      connection.connect(self)
       Del.logger.info("It's fire! 🔥")
-      sleep
+      connection.connect(self)
+      server.run(self)
     rescue Interrupt
       connection.disconnect
     end
lib/del/socket_connection.rb
@@ -0,0 +1,15 @@
+module Del
+  class SocketConnection
+    def initialize(path: '/tmp/del.sock')
+      File.unlink(path) if File.exists?(path)
+      @server = UNIXServer.new(path)
+    end
+
+    def on_receive
+      socket = @server.accept
+      yield socket
+    ensure
+      socket&.close
+    end
+  end
+end
lib/del/socket_server.rb
@@ -0,0 +1,15 @@
+module Del
+  class SocketServer
+    def initialize(connection = SocketConnection.new)
+      @connection = connection
+    end
+
+    def run(robot)
+      loop do
+        @connection.on_receive do |socket|
+          Del.logger.info(socket.readline)
+        end
+      end
+    end
+  end
+end
lib/del.rb
@@ -4,13 +4,16 @@ require "xmpp4r"
 require "xmpp4r/muc/helper/mucbrowser"
 require "xmpp4r/muc/helper/simplemucclient"
 require "xmpp4r/roster/helper/roster"
+require "socket"
 
-require "del/connection"
 require "del/configuration"
+require "del/connection"
 require "del/default_router"
 require "del/message"
 require "del/repository"
 require "del/robot"
+require "del/socket_connection"
+require "del/socket_server"
 require "del/source"
 require "del/user"
 require "del/version"