1、服务器
<?php
//创建Server对象,监听 127.0.0.1:9501 端口
$server = new Swoole\Server('0.0.0.0', 5901);
//监听连接进入事件
$server->on('Connect', function ($server, $fd) {
echo "有用户链接.\n";
});
//监听数据接收事件
$server->on('Receive', function ($server, $fd, $reactor_id, $data) {
echo "$data.\n";
$server->send($fd, "111");
});
//监听连接关闭事件
$server->on('Close', function ($server, $fd) {
echo "有用户关闭.\n";
});
$server->set(array(
'heartbeat_check_interval' => 5,
'heartbeat_idle_time' => 10,
));
//启动服务器
$server->start();
?>
2、启动这个php文件
- cd到这个文件的目录下运行 php server.php
- 这时他可能会报这个错误
- 这是端口被占用了 只需要用 netstat -tunlp 这个命令查看一下
- 找到后, 我们使用 kill 3354512 杀死这个进程,之后在执行 php server.php 就好了
3、客户端,这个可以略过
<?php
$client = new swoole_client(SWOOLE_SOCK_TCP);
if(!$client->connect('139.196.89.41',9501))
{
echo "连接失败\n";
exit;
}
$client->send("1111");
$ret = $client->recv();
4、小程序
<button bindtap="send">点击发送消息</button>
const tcp = wx.createTCPSocket()
/**
* 生命周期函数--监听页面加载
* 进入页面,连接服务端
*/
onLoad: function (options) {
tcp.connect({address: '47.103.124.141', port: 5901})
tcp.onConnect(function(e){
console.log('链接成功')
})
tcp.onClose(function(e){
console.log('链接关闭')
})
tcp.onMessage(function(e){
var buffer = e.message;
var dataview = new DataView(buffer);
var ints = new Uint8Array(buffer.byteLength);
var str = '';
for (var i = 0; i < ints.length; i++) {
str += String.fromCharCode(dataview.getUint8(i));
}
console.log(str);
})
},
//发送数据
send(){
let infor = this.data.infor
tcp.write(infor);
},
5、小程序测试
- 第一个是页面加载时连接成功后给出的提示消息
- 第二个是点击发送,成功后服务器返回的消息