c# - Streaming at LOW bitrate using RESTful WCF service -
i want continuously stream data @ low bitrate : few bytes per second.
my wcf rest service works fine when stream large amount of data. when bitrate low, seems stream buffered until there enough data pass transport layer.
as result, receive 16ko of data every 16 sec instead of 1ko every sec.
how can implement low bitrate streaming in wcf rest?
my wcf service:
void startmywcfservice() { host = new webservicehost(typeof(iserv), new uri("http://localhost:4530/"); var bnd = new webhttpbinding(); bnd.transfermode = transfermode.streamed; host.addserviceendpoint(typeof(iserv), bnd, ""); host.open(); } [servicecontract] public interface iserv { [operationcontract, webget(uritemplate = "/")] stream mystream(); } [servicebehavior(instancecontextmode = instancecontextmode.single)] class serv : iserv { public stream mystream() { var resp = weboperationcontext.current.outgoingresponse; resp.statuscode = system.net.httpstatuscode.ok; return _new mystream(); } } class mystream : stream { public override int read(byte[] buffer, int offset, int count) { // returns few bytes every second } [...] }
edit: noticed 16ko hardcoded buffer size deep inside .net framework (v4) at: system.servicemodel.dll#system.servicemodel.channels.httpoutput.writestreamedmessage()
thanks
you may able work-around buffering returning ienumerable of byte arrays instead of stream, , sending byte[1024] or less each time.
Comments
Post a Comment