我试图用以下方法连接到一个socket(ssl)上 https:/github.commehelixir-socket。
Socket.Web.connect! "stream-api.betfair.com", secure: true
但我面临这个错误。
** (MatchError) no match of right hand side value: {:http_error, "{\"op\":\"connection\",\"connectionId\":\"203-270420013200-944388\"}\r\n"}
(socket 0.3.13) lib/socket/web.ex:251: Socket.Web.connect!/3
但这不是一个错误 服务器接受了我的连接,但是elixir-socket返回了一个错误。那么到底是什么问题呢?
这个错误发生在 此处意思是 Socket.Stream.recv!/2
已经回来了,有些意外。
它是 委托 到 Socket.Stream.Protocol
.
这个图书馆是古老的,AFAICT非常严格。我能想到的唯一的方法是,将它分叉,检查你期望的正确的响应,修改 处理 Socket.Stream.recv!/2
到符合自己要求的东西。
response =
case Socket.Stream.recv!(client, global) do
{:http_response, _, 101, _} -> :ok
{:http_error, _json} -> :ok
_ -> :error
end
并进行相应的处理 为什么你的服务器会以如此奇怪的方式响应,这里就不说了。