source

웹 소켓을 통해 데이터베이스에서 클라이언트로 실시간 데이터 업데이트/변경

manysource 2023. 10. 12. 23:22

웹 소켓을 통해 데이터베이스에서 클라이언트로 실시간 데이터 업데이트/변경

저는 웹 소켓을 이용하여 실시간 어플리케이션을 구축하려고 합니다.현재 저는 데이터베이스 테이블에서 새로운 변경사항을 가져오기 위해 클라이언트 측에서 (고정 간격마다) ajax pulling을 사용하고 있습니다.저는 애플리케이션을 실시간으로 만드는 방법에 대해 완전히 알지 못합니다.

현재 구현:
애플리케이션에서 데이터베이스(MariaDB)에서 ajax polling을 통해 데이터를 가져와 클라이언트의 테이블에 표시하고 있습니다.

예상 동작:
클라이언트 측에서 폴링을 하지 않으며, 데이터베이스 측에서 변경사항이 있을 때마다 연결된 모든 클라이언트를 업데이트해야 합니다.

검색하는 동안 다음과 같은 몇 가지 해결책을 발견했습니다.

  1. Node.js + server.io + Oracle DB
  2. DB 다시 생각하기
  3. 서버 보낸 이벤트
  4. 연속 쿼리 알림

제발, 더 나은 해결책을 찾을 수 있도록 도와주세요.

좋아요!

Node.js
오라클(+ CQN)
Socket.io

  • Node.js 서버가 알림에 대한 쿼리를 등록합니다.
  • 변경 알림 시 node.js 서버가 데이터베이스에서 변경 내용을 꺼냅니다.
  • 변경사항을 성공적으로 검색하면 node.js 서버는 socket.io 을 사용하여 관심 있는 모든 클라이언트에 변경사항을 게시합니다.

Chintan, 이것은 당신이 원하는 모든 것을 포함할 것이므로 socket.io 를 확인해보세요.

Socket.IO는 실시간 양방향 이벤트 기반 통신이 가능합니다.신뢰성과 속도에 동일하게 초점을 맞추어 모든 플랫폼, 브라우저 또는 장치에서 작동합니다.

서버측

node.js 서버에서 연결을 참조하는 'on' 이벤트를 설정할 수 있습니다.연결 이벤트는 socket.io 에서 제공하는 기본 이벤트로, 클라이언트( socket)가 연결할 때 청취하고 트리거할 수 있습니다.따라서 서버에는 다음과 같은 것이 있습니다.

socket.on('connection', function() { console.log('Someone just joined'); });

서버를 연결하는 소켓마다 방금 가입한 사람이 출력됩니다.

이를 더 확장하려면 다음과 같이 배출 이벤트를 추가할 수 있습니다.

socket.on('connection', function() { console.log('Someone just joined'); socket.emit('hello', { message: 'Hello' } });

그래서 고객이 이 hello 이벤트를 연결하면 나옵니다.클라이언트 측에서 이 이벤트를 청취할 수 있는 방법은 다음과 같습니다.

클라이언트측

socket.on('hello', function(data) { console.log(data.message); // Hello });

Socket.io 은 양방향(양방향)으로 데이터를 전송할 수 있으므로 클라이언트에서 이벤트를 내보내고 서버에서 들을 수 있습니다.

당신은 또한 socket.emit 대신 io.emit 대신 특정 이벤트에 대해 모든 클라이언트가 반응할 것이라고 말했습니다.소켓은 해당 소켓에만 방출된다는 것을 기억하세요.Io는 송신자를 포함하여 socket.broadcast.emit를 사용하는 모든 소켓에 송신하지만 송신자는 송신하지 않습니다.

socket.io ' 웹사이트를 확인해보세요.

언급URL : https://stackoverflow.com/questions/39699412/real-time-data-updates-changes-from-data-base-to-client-with-web-socket