2014-03-01 4 views
7

누군가가 하스켈 websocket 라이브러리와 그들이 Yesod와 어떻게 작동하는지의 차이점을 설명 할 수 있는지 궁금합니다.Yesod와 함께 사용할 웹 소켓 라이브러리는 무엇입니까?

내가 진행할 두 가지 주요 예는 this tutorial for Network.Websocketsthe wai websockets package입니다.

wai 패키지에 대한 좋은 예제 나 튜토리얼을 찾을 수 없었습니다. yesod는 wai를 사용하기 때문에 단순한 네트워크보다 어떤 장점이 있습니까? Network.Websockets 대신에 사용되거나 Network.Websockets와 함께 사용해야합니까?

나는 예제를 보았지만 실제로 그들이 yesod 환경에 실제로 어떻게 들어갈 수 있는지 이해하지 못했습니다. 누군가가 웹 소켓이 처리기 및 입출력 장치와 어떻게 관련되는지를 설명 할 수 있다면 Yesod에서 그렇게 좋을 것입니다.

참고 : this questionthis question을 보았지만 적용 방법을 이해할 수 없습니다. 실제로 웹 소켓이 Yesod에 들어갈 위치를 실제로 설명하지 않기 때문에 적용 할 수 없습니다.

답변

4

실제로 웹 소켓은 일반적인 요청/응답 쌍의 범위를 벗어납니다. 따라서 정상적인 Yesod 핸들러는 이 아니며 웹 소켓을 사용하여 간단히 시작할 수 있습니다 (). 그것은 이상적 일 것이고, 우리는 미래에 그러한 지원을 추가 할 것입니다. 그러나 나는 그것을 할 수있는 방법을 찾지 못했습니다 (아이디어/제안/토론은 대단히 환영합니다!).

한편 웹 소켓을 통합하는 방법은 추상화 계층을 떨어 뜨리고 워프로 직접 웹 소켓을 사용하는 것입니다. 링크를 통해 답변을 얻는 방법을 설명합니다.

요구 사항이 무엇인지 잘 모르겠지만 eventsource는 기존 요청/응답 패러다임에 훨씬 적합하며 yesod-eventsource 패키지를 사용하면 Yesod와 쉽게 통합 할 수 있습니다. 그래서 그것이 귀하의 요구 사항을 충족 시키면, 당신은 그것을 확인하고 싶을지도 모릅니다. 또한 Eventsource는 HTTP 역방향 프록시를 사용하면 올바르게 작동한다는 이점이 있습니다.

업데이트이 대답은 더 이상 정확하지 않습니다. 업데이트 된 정보는 David의 대답을 참조하십시오.

+0

eventsource는 꽤 멋져 보입니다. 나는 게임을 사용하고 있으므로 기술적으로 양방향입니다.하지만 클라이언트 -> 서버 메시지에 POST를 사용할 수 있습니다. Yesod.EventSource를 사용하는 방법에 대한 예가 있습니까? 나는 wai-eventsource를 많이 찾았지만 yesod 패키지는 적습니다. 감사! – jmite

+0

여기에 예제가 있습니다 : https://github.com/snoyberg/yesod-devel-beta/blob/master/Yesod/Devel/Status.hs#L102. 그러나 yesod-eventsource는 실제로 wai-eventsource의 맨 위에있는 매우 얇은 레이어이므로 대부분의 예제는 두 가지 모두에 대해 의미가 있어야합니다. –

+0

훌륭합니다, 감사합니다! – jmite