UDP模式,怎么主动给客户端发消息呢? 当客户端给服务器发消息,服务器端会通过onMessage给客户端回复消息,但是当客户端没有给服务器端发消息,那么服务器端如何主动给客户端发消息呢?
用定时器发?
关键用定时器发给谁啊,只能获取外网的ip地址,怎么发到内网客户端的那个机器呢?
得内网用户主动发个udp请求给服务端,不然服务端无法给给某个局域网的用户发消息的。
是啊,内网请求,直接通过send回复没有问题。现在就想知道怎么主动推送消息。
客户端给服务端先发送一个udp请求,服务端保存这个connection,然后定时器定时通过这个connection发送给客户端
定时发送也写在onMessage这个方法里吗?
对啊
我也遇到这个问题了。只能用这种方式吗?用存储的connection发送的话,没法子接受返回的数据呀。。
connection包含了以下信息: { => NULL => resource(11) of type (stream) => string(20) "123.139.19.15:46307" => NULL => NULL => NULL }
其中只有 是客户端的信息,客户端是通过路由器连接到服务器,如果从服务器上给客户端发消息,我测试服务器不能通过123.139.19.15:46307发给客户端(局域网内可以,这样是不是只有固定IP的才可以?)
udp的话超过一定时间不通讯,一般外网路由器会关闭那个临时端口的,这时外网服务器是无法给客户端推送的。这个是间不一定,有的可能超过10秒不通讯就关闭了。
学习了
原来是这样,非常感谢,那是不是使用GatewayWorker的TCP协议更合适一些?
请问这个问题有别的解决方案嘛?
嗯,tcp更适合做推送,推送类推荐用GatewayWorker。接口和分布式部署都超级简单方便
用定时器发?
关键用定时器发给谁啊,只能获取外网的ip地址,怎么发到内网客户端的那个机器呢?
得内网用户主动发个udp请求给服务端,不然服务端无法给给某个局域网的用户发消息的。
是啊,内网请求,直接通过send回复没有问题。现在就想知道怎么主动推送消息。
客户端给服务端先发送一个udp请求,服务端保存这个connection,然后定时器定时通过这个connection发送给客户端
定时发送也写在onMessage这个方法里吗?
对啊
我也遇到这个问题了。只能用这种方式吗?用存储的connection发送的话,没法子接受返回的数据呀。。
connection包含了以下信息:
{
=>
NULL
=>
resource(11) of type (stream)
=>
string(20) "123.139.19.15:46307"
=>
NULL
=>
NULL
=>
NULL
}
其中只有 是客户端的信息,客户端是通过路由器连接到服务器,如果从服务器上给客户端发消息,我测试服务器不能通过123.139.19.15:46307发给客户端(局域网内可以,这样是不是只有固定IP的才可以?)
udp的话超过一定时间不通讯,一般外网路由器会关闭那个临时端口的,这时外网服务器是无法给客户端推送的。这个是间不一定,有的可能超过10秒不通讯就关闭了。
学习了
原来是这样,非常感谢,那是不是使用GatewayWorker的TCP协议更合适一些?
请问这个问题有别的解决方案嘛?
嗯,tcp更适合做推送,推送类推荐用GatewayWorker。接口和分布式部署都超级简单方便