workerman握手失败 handshake response

左手画圈

我是按官方提供的demo案例封装在php框架中, 本地已经测试完毕,通过两个客户端互相发送消息都没有问题, 但是扔服务器上, 第一步握手都失败了,如图:

服务器已运行监听2000端口

2000端口已经对外开放, 通过服务器ip, tcping测试通的

这是前端代码:

补充: 跨域也没有问题, 我用ajax测过;

674 5 0
5个回答

forgaoqiang

建议抓下包看看具体发生了什么,大概率是服务器网络问题,看上去是协商没有完成

另外吐槽下:websocket本身就是为跨域设计存在的,不存在跨域问题,随便连接

  • 左手画圈 2021-07-29

    服务器网络问题是指什么呢? 服务器上有部署其他项目,访问都没有问题

  • forgaoqiang 2021-07-30

    @8173:诡异的是你暴露了公网信息 我去尝试连接并发送了消息 发现是能够连接和使用的 你检查下你的客户端是不是网络有问题吧

  • 左手画圈 2021-07-30

    @8059: 谢谢你的回复, 这个IP暴露没关系,这个小服务器不重要, 昨天发现PHP没装pcntl扩展, 今天装上,环境都没问题了, 但是还是报原来的错, 前端websocket没有触发onopen, 后端已经可以打印到请求,但没有握手成功.

左手画圈

我查看了apache日志,workerman日志,和项目日志,都没有任何报错, 所以不知道如何排错

  • 暂无评论
喵了个咪

workerman debug 方式运行,看下是不是有报错

  • 左手画圈 2021-07-29

    试了,没有报错; 我看了手册中的环境章节, 说PHP需要pcntl和posix扩展; 发现服务器上没有pcntl

左手画圈

我看了手册中的环境要求章节, 说PHP需要pcntl和posix扩展; 发现服务器上没有pcntl, 然后进行安装.
我的linux服务器是centos系统, yum和dnf库中都没有pcntl 所以我用源码编译安装
安装的过程中,不能使用phpize命令, 然后安装PHP对应版本的php-devel; 安装成功了,执行phpize命令,结果永远报这个错误:

Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.

phpize默认安装在 /usr/bin/phpize
我指定到这个bin目录运行也报上面的错误.

下面图片是安装php-devel成功截图

  • 左手画圈 2021-07-31

    问题已经解决了, phpize命令执行不了,是因为环境变量的关系, 系统中还有一个phpize,在当前php版本的目录下,用这个路径执行就OK了, 然后./configure又报错了,也是路径不对.扩展全部装好, 还是无法握手, 至于是哪一环解决的, 我也说不上来 (我用命令开了另一个端口, 防火墙又开又关闭, 接着80端口和443端口失效了, 其他网站都不能访问, 我又把这两个端口加进去, 最后再回过头测websocket,居然握手成功了)

小七他哥

后端代码呢?

  • 左手画圈 2021-07-31

    已经解决了, 至于是哪一环解决的, 我也说不上来

年代过于久远,无法发表回答
🔝