2014-11-04 1 views
1

Server Sent Events in ServiceStack을 사용하고 있으며 원래의 사용을 허용해야합니다.CORS 지원을 사용하여 서버가 보낸 이벤트

응용 프로그램에 ServiceStack CorsFeature을 설치했지만 ServerEventsFeature에 의해 승인되지 않았습니다.

내가 수동으로 OnCreatedAccess-Control-Allow-Origin 헤더를 추가 할 수 있습니다, 그것은 event-stream에 요청을 할 수 있습니다,하지만 난이 요청에 헤더를 설정 할 수 없기 때문에 하트 비트에 대한 요청이 실패합니다. SSE를 기능 is implemented on a RawHandler으로

Plugins.Add(new ServerEventsFeature { 
    HeartbeatInterval = new TimeSpan(0,0,30), 
    OnCreated = (subscription, request) => { 
     request.Response.AddHeader("Access-Control-Allow-Origin","*"); 
    } 
    ... 
} 

, 나는 요청에이 헤더를 가져 오는 방법을 볼 수 없습니다. 내가 /event- URL에 대한 헤더를 설정할 수있는 방법이 있습니까?

감사합니다.

답변

1

/event-stream/event-heartbeat은 Raw HTTP 처리기이고 다른 event-* 경로는 ServiceStack의 요청 파이프 라인을 통과하는 일반적인 ServiceStack 서비스입니다.

Config.GlobalResponseHeaders/event-stream/event-heartbeat 처리기 in this commit에 자동으로 적용하도록 변경했습니다. 이제이 변경 사항에 CORS Headers when CorsFeature is enabled이 자동으로 추가됩니다. 당신은 또한뿐만 아니라 하트 비트 핸들러에 사용자 지정 헤더를 추가 할 수 있도록

또한 /event-streamOnInit 콜백에 맞게 /event-heartbeat 콜백 OnHeartbeatInit을 추가했습니다.

Plugins.Add(new ServerEventsFeature { 
    HeartbeatInterval = new TimeSpan(0,0,30), 
    OnInit = (request) => { 
     request.Response.AddHeader(...); 
    }, 
    OnHeartbeatInit = (request) => { 
     request.Response.AddHeader(...); 
    }, 
    ... 
} 

이 변경 available on MyGet 지금의 v4.0.34 +에서 사용할 수 있습니다.

+0

Thanks Demis :) 이것은 ServiceStack의 새로운 기능 중 하나입니다. – Scott

+0

@Scott 아아, 멋지다. 듣고 다행 :) 당신이 뭔가 재미있게 할 수 있기를 바랍니다! – mythz

+1

Apple Push 알림 대신 Enterprise iPad 애플리케이션 내부로 들어갑니다. 나에게 재미있다./ – Scott

관련 문제