테스트 사이트 - 개발 중인 베타 버전입니다

웹소켓 질문

질문하는사람 6년 전 조회 2,346

클라이언트에서 서버한테 요청없이 서버에서 클라한테 요청을 하려고 합니다

 

현재까지 해본결과 클라이언트가 서버에게 요청하지 않는한 서버가 클라한테 자동으로 이벤트를 보내는건 안되는거같아서 아래 방법으로 시도했는데 이게 mysql을 연결하는거라 트래픽이 걸릴지 의문이네요..

 

- server.js

</p>

<p>루프 시작 {</p>

<p>// 데이터베이스 g5_member에 mb_1이 1 일때까지 루프를 돌린다.</p>

<p>// mb_1이 1이면 io.socket.emit('event', data);</p>

<p>} 루프종료</p>

<p>

 

server.js javascript에서 mysql에 연결해서 특정멤버의 mb_1이 1이 될때까지 루프를 돌리다가

1이면 클라이언트한테 이벤트를 보내고자 합니다..

 

이 방법말곤 없나요?.. 서버가 클라한테 주기적으로 계속 요청을 보내는..

위 방법은 서버한테 무리가 있을거같아서..

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

B
6년 전

대댓글이 안되서 남겨요

그래서 소켓을 쓰는거죠 소켓은 웹변화없이 가능하니...

 

A가 쓴글에 B가 댓글을 남길경우 B댓글남길시

소켓으로 서버에 알려주면 소켓에서 A한테 이벤트를 뿌려주면 됩니다.

간단히 채팅을 생각하면 됩니다. 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

6년 전

누군가 댓글을 단다면 즉각적으로 알림이왔다고 처리하려는데 <---이것이라면

댓글 등록 완료 후 원하는 작업을 하도록 만들면 될텐데요

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

질문하는사람
6년 전
@균이 네.. 저도 생각안해본건 아닙니다 ㅠㅠ
누군가 댓글을 달면 write_comment_update.php에서 소켓에 이벤트를 보내려했는데 php에서 socket.io한테 보내는건 안되니요 ㅠ
균이
6년 전
write_comment_update.php 하단에
server.js를 호출하는 html 페이지를 만들고 스크립트가 실행되게 하면 되는데 php에서 보내는 것이 안된다는 말이 이해가 안되는군요
루프시작 저것을 빼버리면....

~
?>
<script src='server.js'></script>

또는
?>
<script>
~~여기에 소스넣기
</script>

댓글을 작성하려면 로그인이 필요합니다.

B
6년 전

웹에서 mb_1 1이될때 이벤트를 서버로 던져주고 

이때 던져진 이벤트를 서버에서 실행하던 다시 웹으로 던져주던

하면 됩니다.  그럼 루프가 돌필요가 없겠죠... 1번실행(이벤트)

 

루프가 돌게되면 mb_1 1이된 순간부터 계속 동작할것입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

질문하는사람
6년 전
웹에서 mb_1을 체크하는거 자체가 루프 아닌거요? 그리고 웹에서 mb_1을 체크하려면 ajax나 페이지 이동이 있어야할텐데 홈페이지에서 아무 작업도하지않고 가만히 있어도 알림이 왔다고 뜨게할려는거라서용 ㅠ @BlueAngel

댓글을 작성하려면 로그인이 필요합니다.

B
6년 전

이벤트 함수를 하나 만드세요 루프가 돌아갈..

계속돌리기보다 mb_1 이 1인지 아닌지 체크하는

 

setInterval 로 주기적으로 이벤트 함수를 돌려주세요 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

질문하는사람
6년 전
@BlueAngel 인터벌을 꼭 써야되나요? 그냥 루프만 돌리면 안되나요? 누군가 댓글을 단다면 즉각적으로 알림이왔다고 처리하려는데 인터벌을 쓰면 좀 늦지 않을까요? 그리고 mysql에 연결해서 루프를 돌리면 부화가 발생하진 않나요?ajax를 계속 호출하는것처럼..

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인