session怎么定义?

61 views
Skip to first unread message

kar bo

unread,
Oct 14, 2020, 11:47:39 AM10/14/20
to skynet...@googlegroups.com
各位大神:
      大家好!现有一事不明,我在用C写的服务中主动调用skynet_send函数向一个lua服务发送消息,但是收到一个框架抛出的错误:

[:00000009] Unknown request (text): reply string here
[:00000009] lua call [a to :9 : 0 msgsz = 17] error : /Users/zhen/works/skynet/homepad/skynet/lualib/skynet.lua:784: /Users/zhen/works/skynet/homepad/skynet/lualib/skynet.lua:670: Unknown session : 0 from a
stack traceback:
[C]: in function 'assert'
/Users/zhen/works/skynet/homepad/skynet/lualib/skynet.lua:784: in function 'skynet.dispatch_message'

因为在我的C服务中,我不知道这个session是何值,我就直接把它传了个0,就出现了这个错误,

skynet_send(ctx, 0, addr, PTYPE_TEXT, 0, msg, strlen(msg));
请问在C语言中给lua服务发消息时怎么确定这个session值啊?
--
with kind regards

云风

unread,
Oct 14, 2020, 10:37:18 PM10/14/20
to skynet-users
session 可以是非 0 的任意值,用于对端回应这个请求。如果你不需要对端回应这个请求,就设 session 为 0 。

但是,你这个错误是因为:服务器并没有处理 PTYPE_TEXT 这个类型的消息,而不是 session 的问题。你换 lua 写的服务发送消息一样有问题,和你用 C 写没关系。
你需要在服务器调用 skynet.register_protocol 注册这个类型消息的处理函数。
 

kyt...@gmail.com

unread,
Oct 15, 2020, 3:09:53 AM10/15/20
to skynet-users
谢过风神,是我的lua服务没有注册好text类型的消息处理器,加上便好👌。
Reply all
Reply to author
Forward
0 new messages