diff --git a/Dockerfile b/Dockerfile
index 807761fe..159fef09 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -13,5 +13,6 @@ WORKDIR /data
ENV BIGCHAINDB_CONFIG_PATH /data/.bigchaindb
ENV BIGCHAINDB_SERVER_BIND 0.0.0.0:9984
ENV BIGCHAINDB_WSSERVER_HOST 0.0.0.0
+ENV BIGCHAINDB_WSSERVER_SCHEME ws
ENTRYPOINT ["bigchaindb"]
CMD ["start"]
diff --git a/Dockerfile-dev b/Dockerfile-dev
index 16236547..8d7b8797 100644
--- a/Dockerfile-dev
+++ b/Dockerfile-dev
@@ -9,6 +9,7 @@ RUN apt-get update \
ENV BIGCHAINDB_SERVER_BIND 0.0.0.0:9984
ENV BIGCHAINDB_WSSERVER_HOST 0.0.0.0
+ENV BIGCHAINDB_WSSERVER_SCHEME ws
ARG backend
diff --git a/bigchaindb/__init__.py b/bigchaindb/__init__.py
index 1c93b4f5..1bef9c17 100644
--- a/bigchaindb/__init__.py
+++ b/bigchaindb/__init__.py
@@ -69,6 +69,7 @@ config = {
'workers': None, # if none, the value will be cpu_count * 2 + 1
},
'wsserver': {
+ 'scheme': os.environ.get('BIGCHAINDB_WSSERVER_SCHEME') or 'ws',
'host': os.environ.get('BIGCHAINDB_WSSERVER_HOST') or 'localhost',
'port': int(os.environ.get('BIGCHAINDB_WSSERVER_PORT', 9985)),
},
diff --git a/bigchaindb/commands/bigchaindb.py b/bigchaindb/commands/bigchaindb.py
index a46019da..146dab91 100644
--- a/bigchaindb/commands/bigchaindb.py
+++ b/bigchaindb/commands/bigchaindb.py
@@ -96,7 +96,7 @@ def run_configure(args, skip_if_exists=False):
val = conf['server'][key]
conf['server'][key] = input_on_stderr('API Server {}? (default `{}`): '.format(key, val), val)
- for key in ('host', 'port'):
+ for key in ('scheme', 'host', 'port'):
val = conf['wsserver'][key]
conf['wsserver'][key] = input_on_stderr('WebSocket Server {}? (default `{}`): '.format(key, val), val)
diff --git a/bigchaindb/web/views/base.py b/bigchaindb/web/views/base.py
index 662afa77..dc3a642b 100644
--- a/bigchaindb/web/views/base.py
+++ b/bigchaindb/web/views/base.py
@@ -3,7 +3,7 @@ Common classes and methods for API handlers
"""
import logging
-from flask import jsonify, request
+from flask import jsonify
from bigchaindb import config
@@ -25,7 +25,7 @@ def base_ws_uri():
"""Base websocket uri."""
# TODO Revisit as this is a workaround to address issue
# https://github.com/bigchaindb/bigchaindb/issues/1465.
- # NOTE: This is now only for the WS API. Env-variable should be renamed to
- # e.g. WS_HOST or WEBSOCKET_HOST
- host = request.environ['HTTP_HOST'].split(':')[0]
- return 'ws://{}:{}'.format(host, config['wsserver']['port'])
+ scheme = config['wsserver']['scheme']
+ host = config['wsserver']['host']
+ port = config['wsserver']['port']
+ return '{}://{}:{}'.format(scheme, host, port)
diff --git a/docs/server/source/server-reference/configuration.md b/docs/server/source/server-reference/configuration.md
index 3cb62c41..04fed917 100644
--- a/docs/server/source/server-reference/configuration.md
+++ b/docs/server/source/server-reference/configuration.md
@@ -22,6 +22,7 @@ For convenience, here's a list of all the relevant environment variables (docume
`BIGCHAINDB_SERVER_LOGLEVEL`
`BIGCHAINDB_SERVER_WORKERS`
`BIGCHAINDB_SERVER_THREADS`
+`BIGCHAINDB_WSSERVER_SCHEME`
`BIGCHAINDB_WSSERVER_HOST`
`BIGCHAINDB_WSSERVER_PORT`
`BIGCHAINDB_CONFIG_PATH`
diff --git a/tests/test_config_utils.py b/tests/test_config_utils.py
index 16fd043b..72f09039 100644
--- a/tests/test_config_utils.py
+++ b/tests/test_config_utils.py
@@ -147,6 +147,7 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch, request, certs_d
DATABASE_PORT = 4242
DATABASE_BACKEND = request.config.getoption('--database-backend')
SERVER_BIND = '1.2.3.4:56'
+ WSSERVER_SCHEME = 'ws'
WSSERVER_HOST = '1.2.3.4'
WSSERVER_PORT = 57
KEYRING = 'pubkey_0:pubkey_1:pubkey_2'
@@ -169,6 +170,7 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch, request, certs_d
'BIGCHAINDB_DATABASE_PORT': str(DATABASE_PORT),
'BIGCHAINDB_DATABASE_BACKEND': 'mongodb',
'BIGCHAINDB_SERVER_BIND': SERVER_BIND,
+ 'BIGCHAINDB_WSSERVER_SCHEME': WSSERVER_SCHEME,
'BIGCHAINDB_WSSERVER_HOST': WSSERVER_HOST,
'BIGCHAINDB_WSSERVER_PORT': WSSERVER_PORT,
'BIGCHAINDB_KEYRING': KEYRING,
@@ -183,6 +185,7 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch, request, certs_d
'BIGCHAINDB_DATABASE_PORT': str(DATABASE_PORT),
'BIGCHAINDB_DATABASE_BACKEND': DATABASE_BACKEND,
'BIGCHAINDB_SERVER_BIND': SERVER_BIND,
+ 'BIGCHAINDB_WSSERVER_SCHEME': WSSERVER_SCHEME,
'BIGCHAINDB_WSSERVER_HOST': WSSERVER_HOST,
'BIGCHAINDB_WSSERVER_PORT': WSSERVER_PORT,
'BIGCHAINDB_KEYRING': KEYRING,
@@ -255,6 +258,7 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch, request, certs_d
'workers': None,
},
'wsserver': {
+ 'scheme': WSSERVER_SCHEME,
'host': WSSERVER_HOST,
'port': WSSERVER_PORT,
},