13996: Migrate majority of defaults to config.defaults.yml
[arvados.git] / services / api / config / initializers / eventbus.rb
index 7c452c33dd23bbd30c0c7dc3446531b7b633fd72..eb5561a47ff689a275a8b897f8f3e583a6ed7dfe 100644 (file)
@@ -1,32 +1,31 @@
-require 'eventbus'
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
 
-# See application.yml for details about configuring the websocket service.
+if ENV['ARVADOS_WEBSOCKETS']
+  Server::Application.configure do
+    Rails.logger.error "Built-in websocket server is disabled. See note (2017-03-23, e8cc0d7) at https://dev.arvados.org/projects/arvados/wiki/Upgrading_to_master"
 
-Server::Application.configure do
-  # Enables websockets if ARVADOS_WEBSOCKETS is defined with any value.  If
-  # ARVADOS_WEBSOCKETS=ws-only, server will only accept websocket connections
-  # and return an error response for all other requests.
-  if ENV['ARVADOS_WEBSOCKETS']
-    config.middleware.insert_after ArvadosApiToken, RackSocket, {
-      :handler => EventBus,
-      :mount => "/websocket",
-      :websocket_only => (ENV['ARVADOS_WEBSOCKETS'] == "ws-only")
-    }
-    Rails.logger.info "Websockets #{ENV['ARVADOS_WEBSOCKETS']}, running at /websocket"
-
-    Rails.application.config.after_initialize do
-      ActiveRecord::Base.connection_pool.disconnect!
-
-      ActiveSupport.on_load(:active_record) do
-        config = ActiveRecord::Base.configurations[Rails.env] ||
-                 Rails.application.config.database_configuration[Rails.env]
-        config['pool'] = Rails.application.config.websocket_db_pool
-        ActiveRecord::Base.establish_connection(config)
-        Rails.logger.info "Database connection pool size #{Rails.application.config.websocket_db_pool}"
+    class EventBusRemoved
+      def overloaded?
+        false
+      end
+      def on_connect ws
+        ws.on :open do |e|
+          EM::Timer.new 1 do
+            ws.send(SafeJSON.dump({status: 501, message: "Server misconfigured? see http://doc.arvados.org/install/install-ws.html"}))
+          end
+          EM::Timer.new 3 do
+            ws.close
+          end
+        end
       end
     end
 
-  else
-    Rails.logger.info "Websockets disabled"
+    config.middleware.insert_after(ArvadosApiToken, RackSocket, {
+                                     handler: EventBusRemoved,
+                                     mount: "/websocket",
+                                     websocket_only: (ENV['ARVADOS_WEBSOCKETS'] == "ws-only")
+                                   })
   end
 end