请把问题描述清楚
手册上结合thinkphp那页 的例子 是会实现什么效果?
结合的效果
。。。我是不知道send_message.php那段代码怎么用
还有个问题 在tp框架里这例子上的代码 bind.php和send_message.php是不是可以整合成一个控制器?
可以
server端可以完全跟我们常用的web端框架分离部署,比如你的web应用根目录是A,server端的目录(也就是GatewayWorker的目录)是B, A跟B,没有任何联系,可以任意分离部署,完全没有任何影响 一开始,你启动server端,让服务启动起来,然后, 比如你有个order页面,在这个页面上的Js代码中,写上文档示例中的js代码,一旦通过浏览器访问这个页面, 那么这个页面也就跟server端通过websocket建立了连接,js中的ajax中的URL,请求的是控制器里面任意一个方法,这个方法是专门用来做绑定clientId跟uId的, 这个时候,就需要用到 GatewayClient/Gateway.php 这个文件,以TP5来说,你可以把它当做一个第三方类库引入框架里,也就是放在根目录下的extend目录中, 此时注意命名空间,然后回到控制器,在这个绑定的方法中,可以直接照搬示例中bind.php的代码,因为需要用到 Gateway 这个类, 接着,假如,我们有个业务,用户下单后,要推送一条消息给用户,那么,你就可以在你的控制器里面,写一个方法, 这个方法具体做什么呢,按照刚才我们假定的需求,写一段下单的代码后,然后就把示例中 Gateway::sendToUid($uid, $message); 这段代码加到刚才那段下单的 代码后面(这段代码你可以放在任何可以正常使用的地方,这里只是做演示,所以耦合在一起), 这个有点类似于 laravel 中的事件触发,用户下单,这个动作,这个操作,触发了一个事件,在这里,这个事件就是 推送消息 假如此时,用户在order页面上,进行了下单这个操作,那么,就会通过http请求到我们的web端, 根据刚才那段代码,触发 推送消息 这个事件,也就是执行那段 Gateway::sendToUid($uid, $message); 如果用户没有关闭order这个页面,那么页面上就会根据那段JS代码,进行消息提醒,这个示例的大致流程就是这样 总的来说就是- 启动server(这个server不是web端,而是GatewayWorker) ->用户访问order页面(一旦访问,就建立了连接,并绑定) ->用户执行下单操作,触发推送事件 ->页面收到server端推来的消息,并弹出提醒
示例中有一点要注意,不晓得是不是个例,send_message.php 中,Gateway::sendToUid($uid, $message); 这里的 $message 不能是 string 而应该是 类似 json_encode(array( 'status' => 0, 'message' => 'xxxxxx' ))
因为 页面中 js 部分 接收到的消息,最初应该是 jsonString 第一次接触这样的框架,跟以前开发web端,思路不太一样 才摸索了两天,还有很多不懂,希望向各位大神学习,共勉
请把问题描述清楚
手册上结合thinkphp那页 的例子 是会实现什么效果?
结合的效果
。。。我是不知道send_message.php那段代码怎么用
还有个问题 在tp框架里这例子上的代码 bind.php和send_message.php是不是可以整合成一个控制器?
可以
server端可以完全跟我们常用的web端框架分离部署,比如你的web应用根目录是A,server端的目录(也就是GatewayWorker的目录)是B,
A跟B,没有任何联系,可以任意分离部署,完全没有任何影响
一开始,你启动server端,让服务启动起来,然后,
比如你有个order页面,在这个页面上的Js代码中,写上文档示例中的js代码,一旦通过浏览器访问这个页面,
那么这个页面也就跟server端通过websocket建立了连接,js中的ajax中的URL,请求的是控制器里面任意一个方法,这个方法是专门用来做绑定clientId跟uId的,
这个时候,就需要用到 GatewayClient/Gateway.php 这个文件,以TP5来说,你可以把它当做一个第三方类库引入框架里,也就是放在根目录下的extend目录中,
此时注意命名空间,然后回到控制器,在这个绑定的方法中,可以直接照搬示例中bind.php的代码,因为需要用到 Gateway 这个类,
接着,假如,我们有个业务,用户下单后,要推送一条消息给用户,那么,你就可以在你的控制器里面,写一个方法,
这个方法具体做什么呢,按照刚才我们假定的需求,写一段下单的代码后,然后就把示例中 Gateway::sendToUid($uid, $message); 这段代码加到刚才那段下单的
代码后面(这段代码你可以放在任何可以正常使用的地方,这里只是做演示,所以耦合在一起),
这个有点类似于 laravel 中的事件触发,用户下单,这个动作,这个操作,触发了一个事件,在这里,这个事件就是 推送消息
假如此时,用户在order页面上,进行了下单这个操作,那么,就会通过http请求到我们的web端,
根据刚才那段代码,触发 推送消息 这个事件,也就是执行那段 Gateway::sendToUid($uid, $message);
如果用户没有关闭order这个页面,那么页面上就会根据那段JS代码,进行消息提醒,这个示例的大致流程就是这样
总的来说就是-
启动server(这个server不是web端,而是GatewayWorker)
->用户访问order页面(一旦访问,就建立了连接,并绑定)
->用户执行下单操作,触发推送事件
->页面收到server端推来的消息,并弹出提醒
示例中有一点要注意,不晓得是不是个例,send_message.php 中,Gateway::sendToUid($uid, $message);
这里的 $message 不能是 string 而应该是 类似
json_encode(array(
'status' => 0,
'message' => 'xxxxxx'
))
因为 页面中 js 部分 接收到的消息,最初应该是 jsonString
第一次接触这样的框架,跟以前开发web端,思路不太一样
才摸索了两天,还有很多不懂,希望向各位大神学习,共勉