You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
806 B
CoffeeScript
33 lines
806 B
CoffeeScript
class AsciiIo.Worker
|
|
constructor: (url) ->
|
|
@webWorker = new window.Worker(url)
|
|
@webWorker.addEventListener 'message', @onMessage
|
|
|
|
init: (options) ->
|
|
@webWorker.postMessage
|
|
cmd: 'init'
|
|
options: options
|
|
|
|
getProxy: (objectName) ->
|
|
new AsciiIo.WorkerProxy(@webWorker, objectName)
|
|
|
|
onMessage: (e) =>
|
|
if e.data.log
|
|
console.log "log message from worker: #{e.data.log}"
|
|
|
|
|
|
class AsciiIo.WorkerProxy
|
|
constructor: (@webWorker, @objectName) ->
|
|
_.extend(this, Backbone.Events)
|
|
@webWorker.addEventListener 'message', @onMessage
|
|
|
|
onMessage: (e) =>
|
|
if e.data.evt and e.data.src == @objectName
|
|
@trigger e.data.evt, e.data.args...
|
|
|
|
call: (method, args...) ->
|
|
@webWorker.postMessage
|
|
objectName: @objectName
|
|
method: method
|
|
args: args
|