@@ -43,10 +43,6 @@ import scodec.bits.ByteVector
43
43
import scala .scalajs .js
44
44
import scala .scalajs .js .JSConverters ._
45
45
46
- final class WebSocketException private [dom] (
47
- private [dom] val reason : String
48
- ) extends RuntimeException (reason)
49
-
50
46
object WebSocketClient {
51
47
52
48
def apply [F [_]](implicit F : Async [F ]): WSClientHighLevel [F ] = new WSClientHighLevel [F ] {
@@ -88,8 +84,6 @@ object WebSocketClient {
88
84
val reason = exitCase match {
89
85
case Resource .ExitCase .Succeeded =>
90
86
None
91
- case Resource .ExitCase .Errored (ex : WebSocketException ) =>
92
- Some (ex.reason)
93
87
case Resource .ExitCase .Errored (ex) =>
94
88
val reason = ex.toString
95
89
// reason must be no longer than 123 bytes of UTF-8 text
@@ -127,26 +121,24 @@ object WebSocketClient {
127
121
128
122
def receive : F [Option [WSDataFrame ]] = semaphore
129
123
.permit
130
- .use(_ => OptionT (messages.take).semiflatMap (decodeMessage).value)
124
+ .surround( OptionT (messages.take).map (decodeMessage).value)
131
125
.race(error.get.rethrow)
132
126
.map(_.merge)
133
127
134
128
override def receiveStream : Stream [F , WSDataFrame ] =
135
129
Stream
136
130
.resource(semaphore.permit)
137
131
.flatMap(_ => Stream .fromQueueNoneTerminated(messages))
138
- .evalMap (decodeMessage)
132
+ .map (decodeMessage)
139
133
.concurrently(Stream .exec(error.get.rethrow.widen))
140
134
141
- private def decodeMessage (e : MessageEvent ): F [ WSDataFrame ] =
135
+ private def decodeMessage (e : MessageEvent ): WSDataFrame =
142
136
e.data match {
143
- case s : String => WSFrame .Text (s).pure.widen[ WSDataFrame ]
137
+ case s : String => WSFrame .Text (s)
144
138
case b : js.typedarray.ArrayBuffer =>
145
- WSFrame .Binary (ByteVector .fromJSArrayBuffer(b)).pure.widen[WSDataFrame ]
146
- case _ =>
147
- F .raiseError[WSDataFrame ](
148
- new WebSocketException (s " Unsupported data: ${js.typeOf(e.data)}" )
149
- )
139
+ WSFrame .Binary (ByteVector .fromJSArrayBuffer(b))
140
+ case _ => // this should never happen
141
+ throw new RuntimeException
150
142
}
151
143
152
144
override def sendText (text : String ): F [Unit ] =
0 commit comments