Любые примеры реактивных расширений для Javascript + WCF?

Я понимаю основы Javascript, но мне трудно увидеть как это будет работать с WCF. Моя цель - включить доступ к моим данным в стиле COMET (HTTP Push), но я не уверен, что Rx - правильная технология.

Как использовать расширения Javascript Rx с WCF?


person halfbit    schedule 05.04.2011    source источник


Ответы (1)


Поддерживает ли WCF HTTP Push? Довольно легко преобразовать произвольный обратный вызов в Rx Observable, вот как я это сделал (в Coffeescript):

this.createRxCallback = () ->
  subj = new Rx.Subject()
  subj.callback = (params...) -> subj.OnNext(params)
  return subj

Затем вы можете взять любую функцию, требующую обратного вызова, например этот пример из Socket.io:

socket = new io.Socket {node_server_url}
socket.connect()

myCoolObservable = createRxCallback()
socket.on 'message', myCoolObservable.callback

myCoolObservable.Subscribe (x) ->
  console.log x

Или простой пример:

clickObservable = createRxCallback()
document.addEventListener 'myButton', clickObservable.callback, true

clickObservable.Subscribe (x) ->
  console.log "Button was clicked!"
person Ana Betts    schedule 06.04.2011
comment
Я никогда раньше не использовал кофескрипт; Это то, чему я должен научиться вместо того, чтобы углубляться в Javascript? Я в основном парень C # - person halfbit; 06.04.2011
comment
Поскольку я использую Azure, внутренний узел, к которому привязан TCP-сокет, может быть перезапущен. Как мне обработать эту ошибку? - person halfbit; 06.04.2011
comment
@makerofthings7 Coffeescript — это диалект Javascript — его определенно стоит изучить, хотя я не знаю, насколько велика поддержка ASP.NET (т. зависимость от лямбда-выражений. - person Ana Betts; 07.04.2011
comment
Это все еще сбивает меня с толку... может ли кто-нибудь опубликовать образец javascript? Из того, что я могу сказать, XMLHttpRequest ближе всего к сокетам, которые мы можем получить... - person halfbit; 07.04.2011
comment
Этот код больше не будет работать. subj.OnNext(params) должен быть subj.onNext(params) - person Christoph Hegemann; 21.12.2014