저는 이 튜토리얼을 기반으로 한 서버를 가지고 있습니다. 추가 변경 사항을 적용한 후에는 정상적으로 작동했습니다. 하지만 이제 socket.io
,它现在遇到了一些问题。在测试我添加的 socket.io
코드를 추가해 보니 클라이언트 측 코드(엔드포인트)가 서버 측 코드(데이터베이스 쿼리, 처리)를 호출하는 메커니즘에 영향을 미치는 것 같습니다. 단말에 엔드포인트 호출 로그가 나타나면 서버의 클라이언트 측에 호출이 도달하지만 서버 측에는 호출이 되지 않는 것 같습니다.
소켓 서버의 코드는 다음과 같습니다.
으아아아// main.go 서버측
으아아아// main.go 클라이언트
으아아아전체 클라이언트 및 서버 코드를 보려면 위에 링크한 튜토리얼을 확인하세요. startsocket()
전화하지 않으면 모든 것이 잘됩니다.
API의 엔드포인트를 호출할 때 서버측 코드를 호출하는 코드에서 발생하는 다음 오류가 발생합니다.
으아아아코드는 다음과 같습니다.
으아아아error2는 API 호출이 반환하는 것입니다.
이 코드 줄은 차단되어 있으며 StartSocket()
함수는 절대 반환하지 않습니다.
fmt.Print(http.ListenAndServe(":8000", nil))
테스트를 위해 로그를 추가하면 로그 메시지가 인쇄되지 않습니다.
별도의 비차단 고루틴에서 실행해야 합니다 StartSocket()
.
P.S. 예를 들어 이 줄은 log.Fatal(http.ListenAndServe(":8000", nil))
입니다. 코드에서 오류가 발생했습니다.
위 내용은 소켓 서버를 시작하면 gRPC/http 클라이언트 서버 통신이 방해됩니다. Golang의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!