EventSource Wrapper
Monkey Forums/User Modules/EventSource Wrapper
| ||
** 18.05.2016 ** [CHANGED] Name of Subscribe / Unsubscribe to On / Off [ADDED] Custom Events ** 18.05.2016 ** Initial Release Hello I'm presenting a little module for using EventSource on all Targets, which supports brl.socket and the HTML5 Target Here you got some infos about EventSource: http://www.html5rocks.com/en/tutorials/eventsource/basics/ Custom Events are not supported. Currently is nothing documented and only tested Platforms are: HTML5, iOS, Stdcpp, GLFW(3) For Android i need a Milliseconds function and then i will test it. Have fun with using, maybe i will update some days the code. interfaces.monkey eventsource.monkey demo.monkey ' 2016 Benjamin 'k.o.g.' Aregger Strict #If TARGET <> "stdcpp" Then Import mojo #End Import brl.asyncevent Import eventsource Class Listener Implements IOnEventSourceMessage, IOnEventSourceEventMessage, IOnEventSourceOpen, IOnEventSourceError Method OnEventSourceOpen:Void(source:IEventSource) Print "Open" Print source.ReadyState End Method OnEventSourceError:Void(source:IEventSource) Print "Error" Print source.ReadyState End Method OnEventSourceMessage:Void(source:IEventSource, message:String , id:String = "") Print "Message" Print source.ReadyState Print message End Method OnEventSourceEventMessage:Void(source:IEventSource, event:String, message:String, id:String = "") Print "Custom Event: "+event Print source.ReadyState Print message End End Const URL:String = "http://reallocalhost:8888/tests/eventsource/test.php?blabla#asd" #If TARGET <> "stdcpp" Then Class TestApp Extends App Field _source:EventSource Method OnCreate:Int() SetUpdateRate(60) Local listener:Listener = New Listener() _source = New EventSource(URL) _source.OnOpen = listener _source.OnMessage = listener _source.OnError = listener _source.On("test", listener) Print "Connecting" Print _source.ReadyState Return 0 End Method OnUpdate:Int() UpdateAsyncEvents() Return 0 End Method OnRender:Int() Cls(0, 0, 0) DrawText(Millisecs(), DeviceWidth() / 2, DeviceHeight() / 2, 0.5, 0.5) Return 0 End End Function Main:Int() New TestApp() Return 0 End #Else Extern Private #If HOST = "winnt" Then Function usleep:Void(ms:Int) = "::Sleep" #Else Function usleep:Void(ms:Int) #End Private Function Sleep:Void(ms:Int) usleep(ms) End Public Function Main:Int() Local listener:Listener = New Listener() Local source:EventSource = New EventSource(URL) Print "Connecting" Print source.ReadyState source.OnOpen = listener source.OnMessage = listener source.OnError = listener source.On("test", listener) While True UpdateAsyncEvents() Sleep(1000) Wend Return 0 End #End |