UDP模式,怎么主动给客户端发消息呢?

0

UDP模式,怎么主动给客户端发消息呢?
当客户端给服务器发消息,服务器端会通过onMessage给客户端回复消息,但是当客户端没有给服务器端发消息,那么服务器端如何主动给客户端发消息呢?

已邀请:

walkor

赞同来自: snang

udp的话超过一定时间不通讯,一般外网路由器会关闭那个临时端口的,这时外网服务器是无法给客户端推送的。这个是间不一定,有的可能超过10秒不通讯就关闭了。

snang - udp服务

赞同来自: vilson

原来是这样,非常感谢,那是不是使用GatewayWorker的TCP协议更合适一些?

walkor

赞同来自: snang

嗯,tcp更适合做推送,推送类推荐用GatewayWorker。接口和分布式部署都超级简单方便

damao - phper

赞同来自:

用定时器发?

snang - udp服务

赞同来自:

关键用定时器发给谁啊,只能获取外网的ip地址,怎么发到内网客户端的那个机器呢?

damao - phper

赞同来自:

得内网用户主动发个udp请求给服务端,不然服务端无法给给某个局域网的用户发消息的。

snang - udp服务

赞同来自:

是啊,内网请求,直接通过send回复没有问题。现在就想知道怎么主动推送消息。

damao - phper

赞同来自:

客户端给服务端先发送一个udp请求,服务端保存这个connection,然后定时器定时通过这个connection发送给客户端

snang - udp服务

赞同来自:

connection包含了以下信息:
{
=>
NULL
=>
resource(11) of type (stream)
=>
string(20) "123.139.19.15:46307"
=>
NULL
=>
NULL
=>
NULL
}


其中只有 是客户端的信息,客户端是通过路由器连接到服务器,如果从服务器上给客户端发消息,我测试服务器不能通过123.139.19.15:46307发给客户端(局域网内可以,这样是不是只有固定IP的才可以?)

要回复问题请先登录注册