소켓 데이타 읽을때요...

소켓 데이타 읽을때요...

QA

소켓 데이타 읽을때요...

답변 1

본문

안녕하세요..
특정 사이트의 소켓데이타를 읽어서 콘솔에 찍어보고 있습니다.

 

그냥 aaa.php 를 만들어서 

개발자 도구를 보고 해당 사이트 Request URL 을 넣고 콘솔에 찍히는걸 보면..

확인이 되는데요..

 

궁금한거는요..해당 소켓에 연결시도할때요..

개발자 도구를열어서 Request URL (소켓주소)을 카피해서 넣고요..

Request Headers 항목에 보면 

Origin, Cookie 값도 카피해서 넣어야 할때가 있는거 같아서요..

 

Origin  :        https://targetstie.com

Cookie :        cdn=https://static.sitecdn.com; lang=ko; locale=ko; verbose=false;

                   siteSessionid=q63ozafjm56jexj4rxpgohia988dkja09

Connection  :  Upgrade

 

저런내용은 아래 코드에 넣고 이용하려면 어떻게 삽입해야 하는지 알수 있을까요..

항상 조언 감사드립니다.

 


<input id="wssUrl"/>
<button id="connect">연결</button>
 
<script>
document.getElementById("connect").addEventListener('click', connectWss);
function connectWss() {
   const wssUrl = document.getElementById("wssUrl").value;
   const webSocket = new WebSocket(wssUrl);
   webSocket.onopen = function () {
      console.log('서버와 웹소켓 연결 성공!');
   };
   webSocket.onmessage = function (event) {
      console.log(event.data);      
   };
}
</script>

이 질문에 댓글 쓰기 :

답변 1

다음 예제를 참고하시면 가능할 것 같습니다.


<input id="wssUrl"/>
<button id="connect">연결</button>
 
<script>
document.getElementById("connect").addEventListener('click', connectWss);
function connectWss() {
   const wssUrl = document.getElementById("wssUrl").value;
   
   // 헤더 정보 설정
   const headers = {
       'Origin': 'https://targetstie.com',
       'Cookie': 'cdn=https://static.sitecdn.com; lang=ko; locale=ko; verbose=false; siteSessionid=q63ozafjm56jexj4rxpgohia988dkja09',
       // 필요한 다른 헤더들도 여기에 추가할 수 있습니다.
   };
   
   // 웹소켓 객체 생성 시 옵션 설정
   const webSocket = new WebSocket(wssUrl, { headers: headers });
   webSocket.onopen = function () {
      console.log('서버와 웹소켓 연결 성공!');
   };
   webSocket.onmessage = function (event) {
      console.log(event.data);      
   };
}
</script>

안녕하세요. 답변 감사드립니다.
우선 알려주신대로 해본 내용을 먼저 말씀드릴께요..

Uncaught DOMException: Failed to construct 'WebSocket': The subprotocol '[object Object]' is invalid.

형태의 에러 메세지가 나옵니다.

혹시나..소켓 연결이후에요..(기존 상태에서 소켓연결 송공 메세지는 뜹니다.)

다시
$headers .= "Upgrade: websocket\r\n";
$headers .= "Connection: Upgrade\r\n";
$headers .= "Origin: https://targetstie.com";

처럼 해서 webSocket.send 형태로 header 값 업데이트 한번 해줘야 할까요?
아닌거 같긴한데..^^;;

The subprotocol '[object Object]' is invalid 이 오류메세지는 문자열이 아닌 객체를 전달했기 때문에 발생하는 오류입니다.



다음을 참고하시면 해결이 되지 않을까 합니다.



function connectWss() {
   const wssUrl = document.getElementById("wssUrl").value;
   
   const webSocket = new WebSocket(wssUrl);
   webSocket.onopen = function () {
      console.log('서버와 웹소켓 연결 성공!');

      // 헤더 정보 설정
      webSocket.setRequestHeader('Origin', 'https://targetstie.com');
      webSocket.setRequestHeader('Cookie', 'cdn=https://static.sitecdn.com; lang=ko; locale=ko; verbose=false; siteSessionid=q63ozafjm56jexj4rxpgohia988dkja09');
      // 필요한 다른 헤더들도 여기에 추가할 수 있습니다.
   };
   webSocket.onmessage = function (event) {
      console.log(event.data);      
   };
}




setRequestHeader 메서드를 사용하여 헤더 정보를 설정하면 올바른 방식으로 헤더가 WebSocket을 통해 전달될 것으로 생각합니다.

답변 감사드립니다.

말씀해 주신 webSocket.setRequestHeader 를 넣고 해 보았습니다.
우선 콘솔쪽에 보니

서버와 웹소켓 연결 성공!
Uncaught TypeError: webSocket.setRequestHeader is not a function
at webSocket.onopen

에러 메세지가 나옵니다.

setRequestHeader() 를 어떻게 적용하는지 또 찾아봐야 할거 같습니다. ^^;;
친절하게 답변주셔서 감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 53
© SIRSOFT
현재 페이지 제일 처음으로