elixir如何反复向websockets发送数据

时间:2016-08-07 14:22:48

标签: elixir

我有一个读取文件的进程,对于此测试,它每秒读取一行

我希望所有连接的websockets都接收相同的行

e.g;

如果用户1连接他接收第1行,经过第二行2 ..之后第二行第3行...第4行......等等

如果用户2在3秒后连接他接收第3行,在他之后连接第2行并接收第4行等等。

我该如何实现?我应该使用牛仔v1还是v2?

这是使用PubSub从文件读取的进程的代码

DispatchQueue.global(qos: .userInitiated).async { ... }

1 个答案:

答案 0 :(得分:0)

我猜你正在使用Phoenix。在这种情况下,您可以从任何地方在您的端点上调用广播。因此,您可以用以下内容替换您的PubSub.publish行:

MyApp.Endpoint.broadcast("room1", "topic1", %{topic_data: chunk})

此类消息将发送给加入room1频道的所有用户" topic1"事件,所以在客户端你会收到它:

let channel = socket.channel("room1", {})
channel.join()
  .receive("topic1", body => { console.log(body.topic_data) })