Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Websocket 我是否可以将分配添加到“;主插座&x201D;在连接已经建立之后?_Websocket_Elixir_Phoenix Framework - Fatal编程技术网

Websocket 我是否可以将分配添加到“;主插座&x201D;在连接已经建立之后?

Websocket 我是否可以将分配添加到“;主插座&x201D;在连接已经建立之后?,websocket,elixir,phoenix-framework,Websocket,Elixir,Phoenix Framework,正如所解释的,当客户机第一次与服务器连接时,将创建一个“主套接字/进程”,并保存其分配。稍后,当客户机加入特定的频道/主题时,每个频道的套接字/进程都会复制这些分配,并可以随意添加到这些分配中 我现在有一个用例,当用户加入他们自己的频道(即用户:{user\u id}),我从数据库中检索一些关于用户的信息,这些信息应该对该用户以后加入的所有频道全局可用。但是,我还没有找到一种方法将这些信息放入socket.assignments,以便它们在任何地方都可用。如果我尝试分配它们,它们将仅在该特定us

正如所解释的,当客户机第一次与服务器连接时,将创建一个“主套接字/进程”,并保存其分配。稍后,当客户机加入特定的频道/主题时,每个频道的套接字/进程都会复制这些分配,并可以随意添加到这些分配中

我现在有一个用例,当用户加入他们自己的频道
(即用户:{user\u id})
,我从数据库中检索一些关于用户的信息,这些信息应该对该用户以后加入的所有频道全局可用。但是,我还没有找到一种方法将这些信息放入
socket.assignments
,以便它们在任何地方都可用。如果我尝试分配它们,它们将仅在该特定
user:#{user_id}
频道的
socket.assigns
中可用


有办法吗?我是否应该在用户首次连接时,而不是在他们加入单个用户频道时,尝试一次性获取所有这些信息?

不同的频道意味着不同的套接字

最简单的解决方案是保持永久状态(
Agent
ETS
DETS
mnesia
,…),持有地图
user\u id=>user\u info
,并在需要此信息时查询此状态