Skip to content

Commit cc27b51

Browse files
committed
Revert "Semaphore for sending"
This reverts commit 73b4a07.
1 parent 73b4a07 commit cc27b51

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

dom/src/main/scala/org/http4s/dom/WebSocketClient.scala

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ import scodec.bits.ByteVector
4242

4343
import scala.scalajs.js
4444
import scala.scalajs.js.JSConverters._
45-
import fs2.Pipe
4645

4746
final class WebSocketException private[dom] (
4847
private[dom] val reason: String
@@ -55,8 +54,7 @@ object WebSocketClient {
5554
for {
5655
dispatcher <- Dispatcher[F]
5756
messages <- Queue.unbounded[F, Option[MessageEvent]].toResource
58-
receiveSemaphore <- Semaphore[F](1).toResource
59-
sendSemaphore <- Semaphore[F](1).toResource
57+
semaphore <- Semaphore[F](1).toResource
6058
error <- F.deferred[Either[Throwable, INothing]].toResource
6159
close <- F.deferred[CloseEvent].toResource
6260
ws <- Resource.makeCase {
@@ -127,15 +125,15 @@ object WebSocketClient {
127125
def closeFrame: DeferredSource[F, WSFrame.Close] =
128126
(close: DeferredSource[F, CloseEvent]).map(e => WSFrame.Close(e.code, e.reason))
129127

130-
def receive: F[Option[WSDataFrame]] = receiveSemaphore
128+
def receive: F[Option[WSDataFrame]] = semaphore
131129
.permit
132-
.surround(OptionT(messages.take).semiflatMap(decodeMessage).value)
130+
.use(_ => OptionT(messages.take).semiflatMap(decodeMessage).value)
133131
.race(error.get.rethrow)
134132
.map(_.merge)
135133

136134
override def receiveStream: Stream[F, WSDataFrame] =
137135
Stream
138-
.resource(receiveSemaphore.permit)
136+
.resource(semaphore.permit)
139137
.flatMap(_ => Stream.fromQueueNoneTerminated(messages))
140138
.evalMap(decodeMessage)
141139
.concurrently(Stream.exec(error.get.rethrow.widen))
@@ -152,10 +150,10 @@ object WebSocketClient {
152150
}
153151

154152
override def sendText(text: String): F[Unit] =
155-
errorOr(sendSemaphore.permit.surround(F.delay(ws.send(text))))
153+
errorOr(F.delay(ws.send(text)))
156154

157155
override def sendBinary(bytes: ByteVector): F[Unit] =
158-
errorOr(sendSemaphore.permit.surround(F.delay(ws.send(bytes.toJSArrayBuffer))))
156+
errorOr(F.delay(ws.send(bytes.toJSArrayBuffer)))
159157

160158
def send(wsf: WSDataFrame): F[Unit] =
161159
wsf match {
@@ -171,10 +169,7 @@ object WebSocketClient {
171169
}
172170

173171
def sendMany[G[_]: Foldable, A <: WSDataFrame](wsfs: G[A]): F[Unit] =
174-
sendSemaphore.permit.surround(wsfs.foldMapM(send(_)))
175-
176-
override def sendPipe: Pipe[F, WSDataFrame, Unit] = in =>
177-
Stream.resource(sendSemaphore.permit) >> in.evalMap(send(_))
172+
wsfs.foldMapM(send(_))
178173

179174
def subprotocol: Option[String] = Option(ws.protocol).filter(_.nonEmpty)
180175
}

0 commit comments

Comments
 (0)