使用多个erlang行为

我有一个erlang gen_fsm进程,使用erlang的内置gen_tcp通过tcp与远程服务器通信。

我想使这个网络套接字客户端。 经过一番调查,我得到了这个erlang websocket客户端库Erlang Websocket客户端。

看一些例子,它看起来像我必须使用

-behaviour(websocket_client_handler)。

基本上,我在我的start_link中这样做

start_link(UserID) ->
   gen_fsm:start_link(?MODULE, [UserID], []).

但是,其他行为期望init和不同状态的返回值不同。 我已经有了一个我的gen_fsm的状态。

有人可以在这方面提出一些背景。

我认为为同一个模块定义两个行为是没有错的,但是假设每个行为在init / [1/2]函数中需要不同的返回类型,我开始考虑这是否真的是可行的。 只是想联系有经验的人。

谢谢。


原则上,我不认为这是一个问题: init/1init/2是两个完全不同的函数, gen_fsm:start_link只会调用init/1websocket_client:start_link只会调用init/2 。 当然,来自gen_fsm回调函数的状态不会传递给websocket_client ,所以它们可以完全不同。 在实践中,我希望它真的很混乱。

相反,我会将websocket客户端分离成一个单独的模块,该模块从gen_fsm调用(如果我正确理解了你的话)。

链接地址: http://www.djcxy.com/p/38239.html

上一篇: Using more than one erlang behaviour

下一篇: Starting and Terminating child of simple