Hyperlane ਵਿੱਚ WebSocket ਅਤੇ SSE

ਆਧੁਨਿਕ ਐਪਸ ਲਈ ਰੀਅਲ-ਟਾਈਮ ਡੇਟਾ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਤੁਹਾਨੂੰ ਚੈਟ, ਲਾਈਵ ਡੈਸ਼ਬੋਰਡ ਅਤੇ ਨੋਟੀਫਿਕੇਸ਼ਨਾਂ ਲਈ ਇਸਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

Hyperlane ਇੱਕ ਤੇਜ਼ Rust HTTP ਸਰਵਰ ਲਾਇਬ੍ਰੇਰੀ ਹੈ। ਇਹ ਰੀਅਲ-ਟਾਈਮ ਡੇਟਾ ਭੇਜਣ ਲਈ ਦੋ ਮੁੱਖ ਤਰੀਕਿਆਂ ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ: WebSocket ਅਤੇ Server-Sent Events (SSE)।

WebSocket ਬਨਾਮ SSE

WebSocket ਦੋ-ਪਾਸੇ (bidirectional) ਹੁੰਦਾ ਹੈ। ਕਲਾਇੰਟ ਅਤੇ ਸਰਵਰ ਦੋਵੇਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਸੁਨੇਹੇ ਭੇਜ ਸਕਦੇ ਹਨ। ਇਹ ਇੱਕ ਸਿੰਗਲ TCP ਕਨੈਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਸਦੀ ਵਰਤੋਂ ਚੈਟ ਐਪਸ ਜਾਂ ਆਨਲਾਈਨ ਗੇਮਾਂ ਲਈ ਕਰੋ।

SSE ਇੱਕ-ਪਾਸੇ (unidirectional) ਹੁੰਦਾ ਹੈ। ਸਿਰਫ਼ ਸਰਵਰ ਹੀ ਕਲਾਇੰਟ ਨੂੰ ਡੇਟਾ ਭੇਜਦਾ ਹੈ। ਇਹ ਸਟੈਂਡਰਡ HTTP ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਸਦੀ ਵਰਤੋਂ ਨਿਊਜ਼ ਫੀਡ ਜਾਂ ਸਟਾਕ ਟਿਕਰਾਂ ਲਈ ਕਰੋ।

Hyperlane ਵਿੱਚ WebSocket

Hyperlane WebSockets ਨੂੰ ਆਸਾਨ ਬਣਾਉਣ ਲਈ attribute macros ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।

  • WebSocket ਰਿਕਵੈਸਟ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ #[is_ws_upgrade_type] ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • ਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ #[try_get_websocket_request] ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਤੁਸੀਂ ਸਧਾਰਨ ਕਮਾਂਡਾਂ ਨਾਲ ਕਨੈਕਸ਼ਨ ਲਾਈਫ ਸਾਈਕਲ ਨੂੰ ਮੈਨੇਜ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਵਿਅਕਤੀਗਤ ਫਰੇਮ ਜਾਂ ਫਰੇਮਾਂ ਦੀਆਂ ਸੂਚੀਆਂ ਭੇਜ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਇੱਕੋ ਸਮੇਂ ਬਹੁਤ ਸਾਰੇ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਸੁਨੇਹੇ ਭੇਜਣ ਲਈ hyperlane-broadcast ਵਰਗੇ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਵੀ ਕਰ ਸਕਦੇ ਹੋ।

Hyperlane ਵਿੱਚ SSE

SSE ਨੂੰ ਸੈੱਟਅੱਪ ਕਰਨਾ ਵਧੇਰੇ ਸਧਾਰਨ ਹੈ। ਤੁਹਾਨੂੰ ਸਿਰਫ਼ ਇੱਕ ਹੈਡਰ ਸੈੱਟ ਕਰਨ ਦੀ ਲੋੜ ਹੈ: Content-Type: text/event-stream

ਬ੍ਰਾਊਜ਼ਰ ਆਪਣੇ ਆਪ ਰੀਕਨੈਕਸ਼ਨ (reconnection) ਨੂੰ ਸੰਭਾਲ ਲੈਂਦਾ ਹੈ। ਇਹ ਇਸਨੂੰ ਸਧਾਰਨ ਡੇਟਾ ਸਟ੍ਰੀਮਾਂ ਲਈ ਬਹੁਤ ਭਰੋਸੇਮੰਦ ਬਣਾਉਂਦਾ ਹੈ। ਹਰ ਸੁਨੇਹਾ ਇੱਕ ਸਧਾਰਨ ਟੈਕਸਟ ਫਾਰਮੈਟ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ: data: <message>

ਤੇਜ਼ ਤੁਲਨਾ

• ਦਿਸ਼ਾ: WebSocket ਦੋ-ਪਾਸੇ ਹੈ। SSE ਸਿਰਫ਼ ਸਰਵਰ-ਤੋਂ-ਕਲਾਇੰਟ ਹੈ। • ਪ੍ਰੋਟੋਕੋਲ: WebSocket ws:// ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। SSE ਸਟੈਂਡਰਡ HTTP ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। • ਰੀਕਨੈਕਸ਼ਨ: ਤੁਹਾਨੂੰ WebSocket ਰੀਕਨੈਕਸ਼ਨ ਨੂੰ ਮੈਨੂਅਲੀ ਸੰਭਾਲਣਾ ਪਵੇਗਾ। ਬ੍ਰਾਊਜ਼ਰ SSE ਲਈ ਇਹ ਕੰਮ ਆਪਣੇ ਆਪ ਕਰਦੇ ਹਨ। • ਡੇਟਾ ਦੀ ਕਿਸਮ: WebSocket ਬਾਈਨਰੀ ਡੇਟਾ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। SSE ਸਿਰਫ਼ ਟੈਕਸਟ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। • ਜਟਿਲਤਾ: WebSocket ਬਣਾਉਣਾ ਵਧੇਰੇ ਔਖਾ ਹੈ। SSE ਵਧੇਰੇ ਆਸਾਨ ਹੈ।

ਜੇਕਰ ਤੁਹਾਨੂੰ ਘੱਟ ਲੇਟੈਂਸੀ (low latency) ਅਤੇ ਦੋ-ਪਾਸੇ ਗੱਲਬਾਤ ਦੀ ਲੋੜ ਹੈ ਤਾਂ WebSocket ਚੁਣੋ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਅਪਡੇਟਸ ਭੇਜਣ ਲਈ ਇੱਕ ਸਧਾਰਨ ਤਰੀਕੇ ਦੀ ਲੋੜ ਹੈ ਤਾਂ SSE ਚੁਣੋ।

Hyperlane ਤੁਹਾਨੂੰ Rust ਵਿੱਚ ਦੋਵਾਂ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਬਣਾਉਣ ਲਈ ਟੂਲਸ ਦਿੰਦਾ ਹੈ।

Project Code: https://github.com/hyperlane-dev/hyperlane

Source: https://dev.to/tengxgfyrz67s/websocket-and-sse-1867