소켓 데이타 읽을때요... 채택완료
안녕하세요.. 특정 사이트의 소켓데이타를 읽어서 콘솔에 찍어보고 있습니다.
그냥 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 값 업데이트 한번 해줘야 할까요?
아닌거 같긴한데..^^;;