用CRLF json协议连接ssl套接字出错。

问题描述 投票:0回答:1

我试图用以下方法连接到一个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返回了一个错误。那么到底是什么问题呢?

sockets erlang elixir
1个回答
1
投票

这个错误发生在 此处意思是 Socket.Stream.recv!/2 已经回来了,有些意外。

它是 委托Socket.Stream.Protocol.

根据您是否使用 ssl 是否来自 此处 或从 此处.

这个图书馆是古老的,AFAICT非常严格。我能想到的唯一的方法是,将它分叉,检查你期望的正确的响应,修改 处理 Socket.Stream.recv!/2 到符合自己要求的东西。

response =
  case Socket.Stream.recv!(client, global) do
    {:http_response, _, 101, _} -> :ok
    {:http_error, _json} -> :ok
    _ -> :error
  end

并进行相应的处理 为什么你的服务器会以如此奇怪的方式响应,这里就不说了。

© www.soinside.com 2019 - 2024. All rights reserved.