2017-12-21 23 views
0

개인적인 용도로 서버에 백엔드 로직을 구축하려고합니다. 다른 서버의 websocket에 연결되어 있고 소켓에서 데이터를 처리하는 코드를 설정했습니다. 나는 여전히 웹 소켓을 사용하는 것에 상당히 익숙하기 때문에 전체 개념은 여전히 ​​나에게 조금 외국인이다.은 하나의 백엔드 서버 웹 소켓에서 여러 사용자가 충돌합니다.

더 많은 사용자가 백엔드를 사용할 수 있도록 허용하고 websocket이 특정 논리를 실행하는 경우 여러 사용자가 충돌하지 않습니까? 아니면 각 사용자가 자신의 스크립트 인스턴스를 실행하고 있습니까?

나는 무엇을 묻고 싶습니까?

답변

0

더 많은 사용자가 백엔드를 사용할 수 있고 websocket이 특정 로직을 실행하도록 허용한다면 여러 사용자가 충돌하지 않을까요? 아니면 각 사용자가 자신의 스크립트 인스턴스를 실행하고 있습니까? (당신이 당신에 대해 물어 보는 것처럼 소리가 나지 않는다 각 코어에 대한 스크립트의 복사본을 실행하는 클러스터링 같은 것을 사용하지 않는) Node.js를에서

는 실행 스크립트의 사본이있다. 따라서 동일한 서버에 여러 개의 webSocket 연결이있는 경우 동일한 변수가있는 동일한 서버 코드로 실행됩니다. 이는 node.js가 작동하는 방식입니다. 하나의 실행중인 자바 스크립트 엔진과 하나의 코드베이스는 많은 연결을 제공합니다.

node.js는 하나의 webSocket에서 들어오는 이벤트를 처리 한 다음 Javascript 시스템으로 제어를 되돌리고 이벤트 대기열에서 다음 이벤트를 제공하는 등 이벤트 기반 시스템입니다. 요청 핸들러가 일부 비동기 작업을 호출하고 응답을 기다릴 때마다 수신 이벤트 대기열에서 다른 이벤트를 가져올 기회가 생기고 다른 요청 처리기가 실행될 수 있습니다. 이러한 방식으로 Javascript가 실행되는 단일 스레드가 하나만 있더라도 여러 요청 처리기를 완료 할 때까지 모두 진행할 수 있습니다.

일반적으로이 아키텍처는 전역 또는 모듈 범위에 모든 요청 처리기가 해당 범위를 공유하기 때문에 특정 요청 상태를 넣지 않으려한다는 것을 의미합니다. 대신 상태는 요청 별 범위 또는 해당 특정 사용자에게 바인드 된 세션에 있어야합니다.

한 백엔드 서버에서 여러 사용자를위한 충돌 그것은 당신이 제대로 서버 코드를 작성하는 경우 아니, 충돌하지 않습니다

를 WebSocket을. 예, 서버 코드를 잘못 작성하면 충돌합니다.

+0

자세한 설명을 읽어 주셔서 감사합니다. 이제는 내가 만든 논리가 다른 사용자와 충돌하게됩니다. – Chresna

+0

@Chresna - 코드를 작성하는 방법에 전적으로 달려 있으며 코드가 무엇인지 알려주지 않으므로 코드를 표시하지 않았으므로 확실하게 말할 수는 없습니다. 수천 명의 사용자에게 행복하게 봉사 할 수있는 서버를 작성하기 위해 적절한 디자인 원칙을 사용하는 것이 어렵지 않다고 말할 수 있습니다. – jfriend00

+0

내 사과에 stackoverflow 커뮤니티를 사용하여 새로운 – Chresna