1、php和vue(unipp)socket的执行顺序
第一次创建连接的时候
1、第一步:客户端创建socket链接(connnect)
第二步: 服务端接收服务端申请连接的请求(onConnect),发送自定义信息给客户端
使用Gateway::sendToClient发送信息给客户端
第三步:(上面过程相当于已经建立好连接),然后客户端使用
onMessage
来处理服务端发送的数据
第四步:然后客户端就可以向服务端发送数据了,第一次客户端向服务端发送数据的方法是
onSocketOpen
注意接下来客户端发送数据给服务端的操作就是用另外的函数来处理了
创建好连接之后
1、客户端向服务端发送请求的方式就变成了sendMessage
2、服务端接收到请求并处理的方法变成了onMessage
接下来如果服务端还想向客户端发送数据的话就是用:
使用Gateway::sendToClient发送信息给客户端,否则就是客户端单向向服务端传输数据了
2、js中socket.io的写法[ emit发送,on接收(监听) ]
2.1 服务端向客户端发送数据(emit)
// io绑定事件 connection建立连接 断开链接 disconnected
io.on('connect',function(socket){
//服务端的逻辑都写在这里
}) ====> onConnect
//服务端发送消息(data为发送的数据)
io.emit('用于接收的标识',data) ====> Gateway::sendToAll //io.emit 代表向所有人发送信息
socket.emit('用于接收的标识',data) =====> Gateway::sendToClient //socket.emit 代表向当前这个人发送信息
例: io.emit('login',user)
||
||
\/
//(初始化后)客户端接收数据(根据emit第一个参数的标识来对应触发)
const socket = io(); // 调用io方法传入服务器端地址返回socket对象,如果不写就代表是当前服务器地址(要写)
socket.on('login', function (user) {})
2.2 客户端发送数据给服务端
//客户端初始化()
const socket = io(); // 调用io方法传入服务器端地址返回socket对象,如果不写就代表是当前服务器地址(要写)
this.socket = socket;
//客户端向服务端发送数据
socket.emit('用于接收的标识',data);
||
||
\/
//服务端接收客户端发送的数据
socket.on('用于接收的标识',function(data){
//data:从客户端接收到的数据
})