소켓 데이타 읽을때요... 채택완료
그렌트힐
1년 전
조회 3,863
안녕하세요..
특정 사이트의 소켓데이타를 읽어서 콘솔에 찍어보고 있습니다.
그냥 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
저런내용은 아래 코드에 넣고 이용하려면 어떻게 삽입해야 하는지 알수 있을까요..
항상 조언 감사드립니다.
</p>
<p><input id="wssUrl"/>
<button id="connect">연결</button></p>
<p> </p>
<p><script></p>
<p>document.getElementById("connect").addEventListener('click', connectWss);</p>
<p>function connectWss() {
const wssUrl = document.getElementById("wssUrl").value;
const webSocket = new WebSocket(wssUrl);</p>
<p> webSocket.onopen = function () {
console.log('서버와 웹소켓 연결 성공!');
};</p>
<p> webSocket.onmessage = function (event) {
console.log(event.data);
};</p>
<p>}</p>
<p></script></p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
1년 전
다음 예제를 참고하시면 가능할 것 같습니다.
</p>
<p><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': '<a href="https://targetstie.com'," target="_blank" rel="noopener noreferrer">https://targetstie.com',</a>
'Cookie': 'cdn=<a href="https://static.sitecdn.com;" target="_blank" rel="noopener noreferrer">https://static.sitecdn.com;</a> 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>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
�
그렌트힐
1년 전
�
웹메이킹
1년 전
The subprotocol '[object Object]' is invalid 이 오류메세지는 문자열이 아닌 객체를 전달했기 때문에 발생하는 오류입니다.
다음을 참고하시면 해결이 되지 않을까 합니다.
[code]
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);
};
}
[/code]
setRequestHeader 메서드를 사용하여 헤더 정보를 설정하면 올바른 방식으로 헤더가 WebSocket을 통해 전달될 것으로 생각합니다.
다음을 참고하시면 해결이 되지 않을까 합니다.
[code]
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);
};
}
[/code]
setRequestHeader 메서드를 사용하여 헤더 정보를 설정하면 올바른 방식으로 헤더가 WebSocket을 통해 전달될 것으로 생각합니다.
�
그렌트힐
1년 전
답변 감사드립니다.
말씀해 주신 webSocket.setRequestHeader 를 넣고 해 보았습니다.
우선 콘솔쪽에 보니
서버와 웹소켓 연결 성공!
Uncaught TypeError: webSocket.setRequestHeader is not a function
at webSocket.onopen
에러 메세지가 나옵니다.
setRequestHeader() 를 어떻게 적용하는지 또 찾아봐야 할거 같습니다. ^^;;
친절하게 답변주셔서 감사합니다.
말씀해 주신 webSocket.setRequestHeader 를 넣고 해 보았습니다.
우선 콘솔쪽에 보니
서버와 웹소켓 연결 성공!
Uncaught TypeError: webSocket.setRequestHeader is not a function
at webSocket.onopen
에러 메세지가 나옵니다.
setRequestHeader() 를 어떻게 적용하는지 또 찾아봐야 할거 같습니다. ^^;;
친절하게 답변주셔서 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
우선 알려주신대로 해본 내용을 먼저 말씀드릴께요..
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 값 업데이트 한번 해줘야 할까요?
아닌거 같긴한데..^^;;