C# WebSocket통신에서 예외처리에 대한 조언이 필요합니다!!

안녕하세요. c#으로 웹소켓을 통해 데이터를 주고받도록 만들고있습니다.
클라이언트는 c# winform 과 jsp , 서버는 윈도우서비스(로컬)에 두고있습니다.

웹소켓을 이용한 프로그램의 기본 동작은 다음과 같습니다.

  1. 부팅 시 배치파일을 시작프로그램에 넣어 윈도우서비스를 실행시킨다(서버)
  2. 웹에서 사이트 접속시 웹소켓서버에 연결하고 실행시킬 프로그램의 버전체크(레지스트리)를 한다.
  3. 버전체크에 성공하면 웹에서 프로그램을 실행시킨다.
  4. 실행시킨 프로그램에서 저장이나 닫기 등의 행위 시 send를 통해 서버에 데이터를 보내고
    서버가 웹클라이언트로 전달하여 웹화면을 갱신한다.

websocket-sharp로 기능 구현은 성공적으로 마쳤는데 예외처리를 언제 어떻게 해야할지 감이 안잡혀서
질문을 올립니다. 예제들도 기능구현만 있고 예외처리는 없더군요.
생각해본 예외처리의 경우는 다음과 같습니다.

  1. 서버를 localhost에 두고 포트는 잘 안쓰이는 5~6만번대를 사용하려고 하는데
    혹시 포트가 겹쳐서 오류가 날 경우 포트에 +1을 해서 다시 서버를 여는 방식으로 해야할까요?

  2. 웹이나 winform 클라이언트에서 웹소켓서버 접속이 안되거나 갑자기 연결이 끊겼을 경우 웹소켓의 onError를 통해 처리하려하는데 괜찮을까요?

  3. 보통 데이터를 교환할때만 연결하고 끝나면 끊어버리는지 아니면 계속 연결상태로 두는지 궁금합니다. 계속 연결해둔채 장시간이 지나면 문제가 생길지도 모를거 같아서 질문합니다.

  4. 제가 떠올리지 못한 부분이 있다면 말씀해주시면 감사하겠습니다.

웹에서 ocx 뗀다고 새로 방법을 구상하고있는데 초급이 하기엔 많이 어렵네요.
질문외에 기본 동작 방식이나 비효율적이다 생각하시는 부분들도 많은 조언 부탁드립니다. 감사합니다!