Elixir Phoenix-连接套接字、连接通道、推送、接收来自其他应用程序的消息

Elixir Phoenix-连接套接字、连接通道、推送、接收来自其他应用程序的消息,elixir,phoenix-framework,phoenix-channels,Elixir,Phoenix Framework,Phoenix Channels,出于学习目的,我创建了这个简单的TODO应用程序,它使用Phoenix频道而不是控制器来CRUD列表和TODO: 代码如下: 现在,我想继续这个实验,从不同的Phoenix(甚至只是Elixir)应用程序向现有的Heroku应用程序发送频道消息,比如创建一个新列表。但在这里我遇到了麻烦 连接Heroku插座的方式是什么(wss://chandothis.herokuapp.com/socket/websocket?token=undefined&vsn=1.0.0)并加入频道“列表” 更新1

出于学习目的,我创建了这个简单的TODO应用程序,它使用Phoenix频道而不是控制器来CRUD
列表和
TODO


代码如下:

现在,我想继续这个实验,从不同的Phoenix(甚至只是Elixir)应用程序向现有的Heroku应用程序发送频道消息,比如创建一个新列表。但在这里我遇到了麻烦

连接Heroku插座的方式是什么(wss://chandothis.herokuapp.com/socket/websocket?token=undefined&vsn=1.0.0)并加入频道
“列表”

更新1
尝试使用elixir_套接字()
{:ok,socket}=socket.connect('wss://chandothis.herokuapp.com/socket/websocket“”


{好的,
%Web{extensions:nil,headers:%{},key:“Zm9yayB0aGUgZG9uZ2xlcw=”,
掩码:true,原点:nil,路径:“/socket/websocket”,协议:nil,
套接字:{:sslsocket,{:gen_tcp,#Port,:tls_connection,:undefined},
#PID},版本:13}

{{{,{,pid}=socket.socket

sendpid,{:send,%%{主题:“凤凰”,事件:“phx_加入”,负载:%%{}}

但是得到这个:


[信息][83,83,76,58,32,71,111,116,32,117,110,101,120,112,101,99,116,101,100,32,105,110,102,111,58,32,[123,[[123,['send',44,[35,123,['event','=>,[60,60,'phx_join',62,62]],44,10,[''''''.[''''.[''''.['',32,32,32,'''.'''''.''''.'''''''''''.'32,['32,'''''.'''''''''''''''.'32,32,''.''''''',['payload','=>','\\\{}',44,10,[''',['',32,32,…],32,[32,…],32,[',…],32,“,”,'=>',[60,60,''phoenix',…]],125]],125],44,10,[32,['',32,32,['',32,[',32,'',32,[',32,'',32],'',32],'tcp\u错误',44,'.\n''

更新2
Erlang websocket_客户端()的另一次尝试
并以以下内容为例:

{:ok,socket}=Phx.WebsocketClient.start\u链接(self(),”wss://chandothis.herokuapp.com/socket/websocket?token=undefined&vsn=1.0.0”

Phx.WebsocketClient.join(套接字,“列表”%{})

获取以下错误:


[错误]状态机#PID终止
最后一条消息是{:send,%%{event:“phx_join”,有效负载:%%{},ref:“1”,主题:“lists”}
当状态==:断开连接
数据=={:context,{:websocket_-req,:wss,'chandothis.herokapp.com',443',/socket/webs`在这里输入代码`ocket?token=undefined&vsn=1.0.0',:无穷大,:undefined,1,:undefined,{:transport,:ssl,:ssl,:ssl_closed,:ssl_error,[mode::binary,active:true,verify::verify::verify::verify::无,packet:,:undefined,:undefined,:undefined,:undefined,:undefined},{:传输,:ssl,:ssl,:ssl_关闭,:ssl_错误,[模式::二进制,活动:true,verify::verify_none,packet:0]},[],{:wss,'chandothis.herokapp.com',443'/socket websocket token=undefined&vsn=1.0.0'},{Phx.WebsocketClient,{ref:1,发送方:{PID},false,“}”
终止原因={:错误,:断开连接}

到目前为止,您尝试过做什么?Phoenix频道只是web套接字。所以我想的是,如果我可以连接Phoenix.Socket.Transport.connect/6,那么我就可以使用默认的回调,比如
handle\u in
例如,在本地应用程序中有一个
def handle\u in(“created”…)
,然后Heroku应用程序可以推送到这个“created”创建列表后。拦截器是我不能让他们共享同一个socket这可能是
的问题:在你的config/*.exs中检查\u origin
config?到目前为止你都做了什么?Phoenix频道只是web套接字。所以我想的是,如果我可以连接Phoenix.Socket.Transport.connect/6,那么我就可以使用默认的回调,比如
handle\u in
例如,在本地应用程序中有一个
def handle\u in(“created”…)
,然后Heroku应用程序可以推送到这个“created”创建列表后。拦截器是我不能让他们共享同一个插座
:在config/*.exs中检查_origin
config是否有问题?