Permalink
Comparing changes
Open a pull request
- 4 commits
- 2 files changed
- 0 commit comments
- 1 contributor
Unified
Split
Showing
with
25 additions
and 11 deletions.
- +24 −11 elm/Native/WebSocket.js
- +1 −0 elm/WebSocket/LowLevel.elm
| @@ -11,30 +11,43 @@ function open(url, settings) | ||
| } | ||
| catch(err) | ||
| { | ||
| console.log("conn exception"); | ||
| return callback(_elm_lang$core$Native_Scheduler.fail({ | ||
| ctor: err.name === 'SecurityError' ? 'BadSecurity' : 'BadArgs', | ||
| _0: err.message | ||
| ctor: err.name === 'SecurityError' ? 'BadSecurity' : 'BadArgs' | ||
| })); | ||
| } | ||
| socket.addEventListener("open", function(event) { | ||
| callback(_elm_lang$core$Native_Scheduler.succeed(socket)); | ||
| }); | ||
| socket.addEventListener("message", function(event) { | ||
| _elm_lang$core$Native_Scheduler.rawSpawn(A2(settings.onMessage, socket, event.data)); | ||
| }); | ||
| socket.addEventListener("close", function(event) { | ||
| function onEarlyClose(event) { | ||
| console.log("on early close"); | ||
| return callback(_elm_lang$core$Native_Scheduler.fail({ | ||
| ctor: 'FailedOpen' | ||
| })); | ||
| } | ||
| function onClose(event) { | ||
| console.log("on close"); | ||
| _elm_lang$core$Native_Scheduler.rawSpawn(settings.onClose({ | ||
| code: event.code, | ||
| reason: event.reason, | ||
| wasClean: event.wasClean | ||
| })); | ||
| } | ||
| function onMessage(event) { | ||
| console.log("on message"); | ||
| _elm_lang$core$Native_Scheduler.rawSpawn(A2(settings.onMessage, socket, event.data)); | ||
| } | ||
| socket.addEventListener("close", onEarlyClose); | ||
| socket.addEventListener("open", function(event) { | ||
| console.log("on open"); | ||
| socket.removeEventListener("close", onEarlyClose); | ||
| socket.addEventListener("close", onClose); | ||
| socket.addEventListener("message", onMessage); | ||
| callback(_elm_lang$core$Native_Scheduler.succeed(socket)); | ||
| }); | ||
| return function() | ||
| { | ||
| console.log("returned function"); | ||
| if (socket && socket.close) | ||
| { | ||
| socket.close(); | ||
| @@ -80,6 +80,7 @@ type alias Settings = | ||
| type BadOpen | ||
| = BadSecurity | ||
| | BadArgs | ||
| | FailedOpen | ||
| {-| Close a `WebSocket`. If the connection is already closed, it does nothing. | ||