# WebSocket相关 介绍WebSocket独有的方法 ## opcode 在ports.php配置中 ``` 'opcode' => PortManager::WEBSOCKET_OPCODE_TEXT, ``` * PortManager::WEBSOCKET_OPCODE_TEXT:文本模式 * PortManager::WEBSOCKET_OPCODE_BINARY:二进制模式 ## onWebSocketHandCheck AppServer中onWebSocketHandCheck方法。 ``` /** * 可以在这验证WebSocket连接,return true代表可以握手,false代表拒绝 * @param HttpInput $httpInput * @return bool */ public function onWebSocketHandCheck(HttpInput $httpInput) { return true; } ``` 可以在这验证WebSocket连接,return true代表可以握手,false代表拒绝。需要设置setCustomHandshake为true,否则不生效。 通过$httpInput可以获取到创建连接时的URL地址,可以通过携带的token或者其他字段进行权限验证,返回true代表验证通过可以握手。 ## setCustomHandshake AppServer中setCustomHandshake方法。 是否自定义握手,默认是false,将采用默认的握手规则,如果需要自定义则需要在AppServer的__construct方法中赋值为true。 ## onSwooleWSHandShake AppServer中onSwooleWSHandShake方法。 自定义握手规则,可以通过重写此方法实现,setCustomHandshake需要设置为true。 ## 发送消息 和TCP共用API ## 搭配默认封装器和路由器 推荐ws的默认封装器为NonJsonPack,他是以json作为数据的封装,默认的路由器为NormalRoute,他需求的格式如下。 ``` stdClass{ controller_name=>"", method_name=>"", path=>"", params=>"" } ``` 其中controller_name和method_name是必须的字段。stdClass中可以包含其他命名字段,所有数据作为整体传递给Controller。 结合NonJsonPack那么客户端发出的基础数据应该为下面格式的json文本 ``` {"controller_name":"*","method_name":"*"} ```