แจกฟรี SSE WebSocket สำหรับใช้ส่ง message ไปที่ client แบบ Realtime ไม่ต้อง Refresh

แจกฟรี SSE WebSocket  สำหรับใช้ส่ง message ไปที่ client แบบ Realtime ไม่ต้อง Refresh


SSE Websocket คืออะไร

การสร้าง Connection ระหว่าง Client และ Server นั้นทำผ่าน HTTP Protocol แบบเดียวกันกับเวลาที่ Client เรียก API

 เพียงแต่ใน Header จะระบุ Content-Type เป็น text/event-stream เพื่อให้รู้ว่าเป็นเส้นสำหรับ SSE

หลังจากนั้น Server ก็จะส่งข้อมูลไปหา Client ได้เรื่อย ๆ ผ่าน Connection เดิมที่เชื่อมต่อกันค้างไว้ จนกว่าฝั่งใดฝั่งหนึ่งจะปิดการชื่อมต่อ



ข้อจำกัด

ถึงแม้ว่าการใช้ SSE จะทำได้ง่าย ตั้งแต่การเขียนโค้ดไปจนถึงโปรโตคอลที่เชื่อมต่อก็ใช้ HTTP ธรรมดา ๆ ทำให้ไม่ต้องกังวลเรื่องปัญหาการเชื่อมต่อต่าง ๆ

 แต่ว่าทุก ๆ เครื่องมือก็มีข้อจำกัดของมัน และสำหรับ SSE ก็จะมีเรื่องที่ควรจะรู้เอาไว้ก่อนเลือกใช้งาน เช่น


Unidirectional – ถูกออกแบบมาให้ใช้เพื่อสื่อสารเพียงทางเดียว ถ้าหากต้องการสื่อสารสองทางอาจจะต้องเลือกใช้ WebSocket แทน

Text Base – SSE นั้นรองรับการส่งข้อมูลในรูปแบบของข้อความเท่านั้น ไม่สามารถส่ง Binary ได้

Concurrent Connections – การใช้ SSE นั้นถูกจำกัดจำนวนการเชื่อมต่อสูงสุดเอาไว้โดยเบราเซอร์ โดยนับเป็นรายโดเมน ทำให้การเปิดเว็บหลาย ๆ แท็บ อาจจะเกินจำนวนสูงสุดได้


# อ้างอิง

https://www.borntodev.com/2023/04/07/server-sent-event/



############################## ทำอะไรได้บ้าง ####################################


 *** รองรับ JDK 19 ขึ้นไป ***********


url SSE WebSocket  Api

http://localhost:8080/notification


swagger

http://localhost:8080/notification/swagger-ui.html


 

1. กรณีต้องการ test client connect เข้า command พิมพ์


 curl -i -H "RefId: 1231" http://localhost:8080/notification/events


2. server ต้องการส่ง message ไปที่ client


 2.1 ##### curl ######

   curl --location 'http://localhost:8080/notification/events' \

--header 'RefId: 1231' \

--header 'Content-Type: application/json' \

--data '{

    "type": "info",

    "body": {

        "message":"ทดสอบ2ปปปz",

        "result": "SUCCESS",

        "send_by":"admincc",

        "status":"unread"

    }

}'


 2.2 ##### php Script #####


<?php


$curl = curl_init();


curl_setopt_array($curl, array(

  CURLOPT_URL => 'http://localhost:8080/notification/events',

  CURLOPT_RETURNTRANSFER => true,

  CURLOPT_ENCODING => '',

  CURLOPT_MAXREDIRS => 10,

  CURLOPT_TIMEOUT => 0,

  CURLOPT_FOLLOWLOCATION => true,

  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

  CURLOPT_CUSTOMREQUEST => 'POST',

  CURLOPT_POSTFIELDS =>'{

    "type": "info",

    "body": {

        "message":"ทดสอบ2ปปปz",

        "result": "SUCCESS",

        "send_by":"admincc",

        "status":"unread"

    }

}',

  CURLOPT_HTTPHEADER => array(

    'RefId: 1231',

    'Content-Type: application/json'

  ),

));


$response = curl_exec($curl);


curl_close($curl);

echo $response;




########## ถ้าคุณพร้อมแล้ว ดาวน์โหลดได้เลย ###########


คลิก == >  https://www.posvis.com/filedownload/sse-websocket-noti-api.zip



หากต้องการให้ช่วยเหลือติดต่อที่ message ได้เลย



แจกฟรี SSE WebSocket สำหรับใช้ส่ง message ไปที่ client แบบ Realtime ไม่ต้อง Refresh
(last modified )