gpt4 book ai didi

websocket - 打开与本地服务器的 websocket 连接

转载 作者:行者123 更新时间:2023-12-02 01:32:55 24 4
gpt4 key购买 nike

我正在使用 elixir-socket图书馆。我希望能够连接到在同一个 erlang/elixir 环境中运行的测试服务器,这样我就可以测试发送的消息。当我尝试使用 elixir 套接字连接到本地主机时,出现域不存在的错误。

作为一个例子,我有一个测试,它只打印网络服务器接收到的消息来说明这一点。

defmodule MyTest do
use ExUnit.Case

test "socket" do
port = 9999
SingleServer.start_link(port)
:timer.sleep(2_000)
socket = Socket.Web.connect! "0.0.0.0:#{port}"
socket |> Socket.Web.send! { :text, "test" }
:timer.sleep(2_000)
end

end


defmodule SingleServer do
def start_link(port) do
spawn_link __MODULE__, :init, [port]
end

def init(port) do
server = Socket.Web.listen! port
client = server |> Socket.Web.accept!
client = server |> Socket.Web.accept!
client |> Socket.Web.recv! |> IO.inspect
end
end

最佳答案

在客户端连接到主机/端口使用两个参数 connect!connect! 传递一对:

Socket.Web.connect!("localhost", port)
|> Socket.Web.send!({ :text, "test" })

在服务器端有点违反直觉,accept! 似乎在做一些不同的事情,这取决于你传递给它的是服务器套接字还是客户端套接字。如果您传递服务器,它会等待客户端连接并返回客户端套接字。如果您传递客户端套接字,它会“接受”连接(而不是 close!ing 它),因此服务器端代码应该类似于:

server = Socket.Web.listen!(port)
client = Socket.Web.accept!(server)
Socket.Web.accept!(client)

client |> Socket.Web.recv! |> IO.inspect

关于websocket - 打开与本地服务器的 websocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33083753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com