如何只处理erlang队列中的最新消息?

西娃

我正在用Erlang编写一个游戏引擎,其中服务器不断向客户端发送新职位。我只想使用最新消息并丢弃其余消息,有什么办法可以做到?我在客户端使用Jinterface,所以对此的解决方案将是不错的。

帕斯卡

在erlang中,(直接)做您所说的是不可能的。但是您可以使用中间服务器来实现此行为。该服务器的作用是接收所有消息并保留最新消息的副本,并通过发送此消息来答复客户端请求。

-module(latest).

-compile([export_all]).


start() ->
    P = spawn(fun() -> loop(empty) end),
    register(?MODULE,P).

loop(Last) ->
    receive
        {newpos,X} -> loop(X);
        {getpos,Pid} -> Pid ! Last, loop(empty);
        stop -> stopped
    end.
% interfaces

storepos(X) -> ?MODULE ! {newpos,X}.

getpos() -> 
    ?MODULE ! {getpos,self()},
    receive
        M -> M
    end.

stop() -> ?MODULE ! stop.

% test func

test() ->
    start(),
    P1 = spawn(fun() -> posloop(0) end),
    P2 = spawn(fun() -> clientloop() end),
    {P1,P2}.

endtest({P1,P2}) ->
    exit(P1,kill),
    exit(P2,kill),
    stop().

posloop(I) ->
    storepos(I),
    timer:sleep(random:uniform(50)),
    posloop(I+1).

clientloop() ->
    io:format("position at ~p is ~p~n",[erlang:now(),getpos()]),
    timer:sleep(random:uniform(200)),
    clientloop().

测试结果:

1> A = latest:test().
position at {1399,377773,874000} is 0
{<0.64.0>,<0.65.0>}
position at {1399,377773,967000} is 2
position at {1399,377774,124000} is 6
position at {1399,377774,327000} is 12
position at {1399,377774,436000} is 17
position at {1399,377774,514000} is 19
position at {1399,377774,639000} is 24
position at {1399,377774,827000} is 30
position at {1399,377774,967000} is 34
position at {1399,377775,77000} is 38
position at {1399,377775,202000} is 42
position at {1399,377775,233000} is 43
position at {1399,377775,280000} is 44
position at {1399,377775,436000} is 47
position at {1399,377775,483000} is 48
position at {1399,377775,608000} is 52
position at {1399,377775,655000} is 54
position at {1399,377775,749000} is 57
position at {1399,377775,842000} is 60
position at {1399,377775,858000} is empty
position at {1399,377775,983000} is 63
position at {1399,377776,92000} is 66
position at {1399,377776,186000} is 69
2> latest:endtest(A).
stop
3> 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从mongodb的聊天对话中获取最新消息

来自分类Dev

获取对话中的最新消息

来自分类Dev

如何在SQL中某个用户的每次会话中获取最新消息?

来自分类Dev

Azure Event Hub如何获取最新消息

来自分类Dev

如何从Kafka主题中检索最新消息

来自分类Dev

雷鸟仅转发对话中的最新消息

来自分类Dev

如何在IncrediBuild for Visual Studio 2012中禁用“最新消息”选项卡?

来自分类Dev

如何获取集合中每个发件人的最新消息?

来自分类Dev

我如何在discord.js中获得最新消息?

来自分类Dev

如何获取json字符串中的最新消息

来自分类Dev

如何从ios中的firebase数据库获取最新消息

来自分类Dev

Vuejs有新消息时如何滚动到最新消息

来自分类Dev

获取每个线程的最新消息

来自分类Dev

获取每个对话的最新消息

来自分类Dev

列出聊天的最新消息

来自分类Dev

XMPP查询归档的最新消息

来自分类Dev

选择每个线程的最新消息

来自分类Dev

获取每个对话的最新消息

来自分类Dev

从IObservable获取最新消息

来自分类Dev

获取会话的最新消息回复

来自分类Dev

如何在mongo中执行此查询:获取有关用户列表的最新消息

来自分类Dev

如何在mongo中执行此查询:获取有关用户列表的最新消息

来自分类Dev

Rails-搜索消息和对话。如何仅显示每个对话的最新消息?

来自分类Dev

使用Django的ORM在每个消息线程中查找最新消息

来自分类Dev

Maria Db-从用户ID =变量的所有消息列表中获取最新消息

来自分类Dev

显示消息表中的最新消息,按用户分组

来自分类Dev

EF Core - 在列表查询结果中包含对话中的最新消息

来自分类Dev

如何通过设备通过HTTP从IoT中心检索最新消息(事件)

来自分类Dev

在Android 5最新消息屏幕中更改活动的标题/标签

Related 相关文章

  1. 1

    如何从mongodb的聊天对话中获取最新消息

  2. 2

    获取对话中的最新消息

  3. 3

    如何在SQL中某个用户的每次会话中获取最新消息?

  4. 4

    Azure Event Hub如何获取最新消息

  5. 5

    如何从Kafka主题中检索最新消息

  6. 6

    雷鸟仅转发对话中的最新消息

  7. 7

    如何在IncrediBuild for Visual Studio 2012中禁用“最新消息”选项卡?

  8. 8

    如何获取集合中每个发件人的最新消息?

  9. 9

    我如何在discord.js中获得最新消息?

  10. 10

    如何获取json字符串中的最新消息

  11. 11

    如何从ios中的firebase数据库获取最新消息

  12. 12

    Vuejs有新消息时如何滚动到最新消息

  13. 13

    获取每个线程的最新消息

  14. 14

    获取每个对话的最新消息

  15. 15

    列出聊天的最新消息

  16. 16

    XMPP查询归档的最新消息

  17. 17

    选择每个线程的最新消息

  18. 18

    获取每个对话的最新消息

  19. 19

    从IObservable获取最新消息

  20. 20

    获取会话的最新消息回复

  21. 21

    如何在mongo中执行此查询:获取有关用户列表的最新消息

  22. 22

    如何在mongo中执行此查询:获取有关用户列表的最新消息

  23. 23

    Rails-搜索消息和对话。如何仅显示每个对话的最新消息?

  24. 24

    使用Django的ORM在每个消息线程中查找最新消息

  25. 25

    Maria Db-从用户ID =变量的所有消息列表中获取最新消息

  26. 26

    显示消息表中的最新消息,按用户分组

  27. 27

    EF Core - 在列表查询结果中包含对话中的最新消息

  28. 28

    如何通过设备通过HTTP从IoT中心检索最新消息(事件)

  29. 29

    在Android 5最新消息屏幕中更改活动的标题/标签

热门标签

归档