Mainflux.mainflux/ws
Sammy Kerata Oina 9b4c2b24c8
UV-267 - Update WS service to mproxy (#1917)
* update WS service to mproxy

Signed-off-by: SammyOina <sammyoina@gmail.com>

* Fix brokerstracing initialization in main.go

The commit fixes the initialization of the brokerstracing package in the main.go file. The target server configuration is now correctly passed to the NewPubSub function, ensuring that the correct host and port are used for the PubSub service. This resolves an issue where the wrong server configuration was being used, leading to incorrect behavior.

Signed-off-by: SammyOina <sammyoina@gmail.com>

* Fix goroutine issue in main.go

The commit fixes a goroutine issue in the main.go file. Previously, the `hs.Start()` function was not being executed in a goroutine, which caused the program to block. This commit wraps the `hs.Start()` function call in a goroutine to ensure it runs concurrently. This resolves the issue and allows the program to continue execution without blocking.

Signed-off-by: SammyOina <sammyoina@gmail.com>

* update to current mproxy

Signed-off-by: SammyOina <sammyoina@gmail.com>

* update dependencies

Signed-off-by: SammyOina <sammyoina@gmail.com>

* Fix targetWSHost value in proxyWS function

The targetWSHost value in the proxyWS function was empty. This commit fixes the issue by setting the targetWSHost value to "localhost". Additionally, the target variable in the proxyWS function is updated to include the "ws://" protocol prefix.

Signed-off-by: SammyOina <sammyoina@gmail.com>

* update deps

Signed-off-by: SammyOina <sammyoina@gmail.com>

* remove authorize from unsubscribe

Signed-off-by: SammyOina <sammyoina@gmail.com>

---------

Signed-off-by: SammyOina <sammyoina@gmail.com>
2023-10-23 16:22:09 +02:00
..
api UV-267 - Update WS service to mproxy (#1917) 2023-10-23 16:22:09 +02:00
mocks NOISSUE - Add Subscriber Config (#1896) 2023-10-23 15:27:15 +02:00
tracing UV-267 - Update WS service to mproxy (#1917) 2023-10-23 16:22:09 +02:00
README.md NOISSUE - Make MQTT Broker Configurable (#1904) 2023-10-19 21:01:09 +02:00
adapter.go UV-267 - Update WS service to mproxy (#1917) 2023-10-23 16:22:09 +02:00
adapter_test.go UV-267 - Update WS service to mproxy (#1917) 2023-10-23 16:22:09 +02:00
client.go MF-1506 - Group-based Access Control (#1716) 2023-06-14 12:40:37 +02:00
client_test.go NOISSUE - Change import name aliases (#1868) 2023-08-11 11:30:25 +02:00
doc.go MF-1506 - Group-based Access Control (#1716) 2023-06-14 12:40:37 +02:00
handler.go UV-267 - Update WS service to mproxy (#1917) 2023-10-23 16:22:09 +02:00

README.md

WebSocket adapter

WebSocket adapter provides an WebSocket API for sending and receiving messages through the platform.

Configuration

The service is configured using the environment variables presented in the following table. Note that any unset variables will be replaced with their default values.

Variable Description Default
MF_WS_ADAPTER_LOG_LEVEL Log level for the WS Adapter info
MF_WS_ADAPTER_HTTP_HOST Service WS host
MF_WS_ADAPTER_HTTP_PORT Service WS port 8190
MF_WS_ADAPTER_HTTP_SERVER_CERT Service WS server certificate
MF_WS_ADAPTER_HTTP_SERVER_KEY Service WS server key
MF_THINGS_AUTH_GRPC_URL Things service Auth gRPC URL localhost:7000
MF_THINGS_AUTH_GRPC_TIMEOUT Things service Auth gRPC request timeout in seconds 1s
MF_THINGS_AUTH_GRPC_CLIENT_TLS Flag that indicates if TLS should be turned on false
MF_THINGS_AUTH_GRPC_CA_CERTS Path to trusted CAs in PEM format
MF_MESSAGE_BROKER_URL Message broker instance URL nats://localhost:4222
MF_JAEGER_URL Jaeger server URL http://jaeger:14268/api/traces
MF_SEND_TELEMETRY Send telemetry to mainflux call home server true
MF_WS_ADAPTER_INSTANCE_ID Service instance ID ""

Deployment

The service is distributed as Docker container. Check the ws-adapter service section in docker-compose to see how the service is deployed.

Running this service outside of container requires working instance of the message broker service. To start the service outside of the container, execute the following shell script:

# download the latest version of the service
git clone https://github.com/mainflux/mainflux

cd mainflux

# compile the ws
make ws

# copy binary to bin
make install

# set the environment variables and run the service
MF_WS_ADAPTER_LOG_LEVEL=[WS adapter log level] \
MF_WS_ADAPTER_HTTP_HOST=[Service WS host] \
MF_WS_ADAPTER_HTTP_PORT=[Service WS port] \
MF_WS_ADAPTER_HTTP_SERVER_CERT=[Service WS server certificate] \
MF_WS_ADAPTER_HTTP_SERVER_KEY=[Service WS server key] \
MF_THINGS_AUTH_GRPC_URL=[Things service Auth gRPC URL] \
MF_THINGS_AUTH_GRPC_TIMEOUT=[Things service Auth gRPC request timeout in seconds] \
MF_THINGS_AUTH_GRPC_CLIENT_TLS=[Flag that indicates if TLS should be turned on] \
MF_THINGS_AUTH_GRPC_CA_CERTS=[Path to trusted CAs in PEM format] \
MF_MESSAGE_BROKER_URL=[Message broker instance URL] \
MF_JAEGER_URL=[Jaeger server URL] \
MF_SEND_TELEMETRY=[Send telemetry to mainflux call home server] \
MF_WS_ADAPTER_INSTANCE_ID=[Service instance ID] \
$GOBIN/mainflux-ws

Usage

For more information about service capabilities and its usage, please check out the WebSocket paragraph in the Getting Started guide.