0

RESTful to websocket API 问题:我想启用一个与 websockets 接口的 RESTful api。

我有一些硬件与我的 Phx.server 保持 WS 连接,我想允许其他客户端通过 RESTful api 访问 phx.server 并与 WS 连接的硬件进行交互。

我没有弄清楚的部分是 RESTful 调用的响应,即 http 响应。假设我希望客户端能够从通过 WS 连接的硬件上的传感器请求当前温度。

我可以使用 Phoenix.Endpoint.broadcast(topic, event, msg) 通过控制器向 WS 广播,但我想“等待”响应,以便我可以在来自客户端的 HTTP 响应中发回 temp。任何建议表示赞赏。

4

1 回答 1

0

我不确定,但我会尝试类似的方法:

conn结构发送到您的套接字设备,该设备会将其包含在response.

并在您的 Channel 中实现一个handle_in回调,它将使用 conn 结构处理来自您的 Socket 的响应,以便您可以重用它,将响应发送到您的 HTTP 客户端:

  # Send the connection to your socket
  Phoenix.Endpoint.broadcast(topic, event, %{"conn" => conn})

  #
  def handle_in("temperature_response", %{"temperature" => t, "conn" => conn}, socket) do
    render(conn, "temperature.json", %{"temperature" => t})
    {:noreply, socket}
  end
于 2017-09-10T12:24:59.490 回答