首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iex上测试凤凰频道(用于聊天)

在iex上测试凤凰频道(用于聊天)
EN

Stack Overflow用户
提问于 2016-09-08 16:51:11
回答 1查看 683关注 0票数 1

我正在使用标准(规范?) 凤凰聊天实例来构建一些东西。但是,因为我只处理后端,所以我不想在客户端遇到与JavaScript搏斗的麻烦。我想测试我的房间创建和广播超过3-4终端会议,这将作为用户。

所以我马上就尝试了:

代码语言:javascript
复制
iex(2)> Rtc.RoomChannel.join("rooms:gossip", "hey!", {})
{:ok, {}}

嗯,真奇怪。我应该把插座拿回来的。等一下!愚蠢的我,我刚刚通过一个空的元组,而不是一个插座,并得到了它。这意味着我只需要传递一个有效的套接字作为第三个参数。太酷了!。。

但是如何得到插座呢?然后,我记得在通道目录中有一个名为user_socket的东西,所以我尝试了这样的方法:

代码语言:javascript
复制
iex(5)> h MyApp.UserSocket.connect
@callback connect(params :: map(), Phoenix.Socket.t()) :: {:ok, Phoenix.Socket.t()} | :error 

啊哈!现在我知道如何创建套接字了。因此,让我们创建一个:

代码语言:javascript
复制
iex(6)> MyApp.UserSocket.connect(%{}, Phoenix.Socket.t())
** (UndefinedFunctionError) undefined function Phoenix.Socket.t/0
    (phoenix) Phoenix.Socket.t()

实际上,在t()模块中没有Phoenix.Socket函数。

我哪里出错了?是否有可能创建这样的套接字,或者我注定要有一个JavaScript客户端?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-09 02:34:38

您应该看看Phoenix.Socket module.This是如何定义connect/2回调的:

代码语言:javascript
复制
...
alias Phoenix.Socket

@callback connect(params :: map, Socket.t) :: {:ok, Socket.t} | :error

...
  @type t :: %Socket{id: nil,
                     assigns: %{},
                     channel: atom,
                     channel_pid: pid,
                     endpoint: atom,
                     handler: atom,
                     joined: boolean,
                     pubsub_server: atom,
                     ref: term,
                     topic: String.t,
                     transport: atom,
                     transport_name: atom,
                     serializer: atom,
                     transport_pid: pid}

典型果胶

远程类型 任何模块都可以定义自己的类型,而Elixir中的模块也不例外。例如,Range模块定义了一个表示范围的t类型:这种类型可以称为Range.t。以类似的方式,字符串是String.t,任何可枚举的字符串都可以是Enum.t,依此类推。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39396435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档