棘轮WebSocket (failed: WebSocket打开握手超时)
Ratchet WebSocket (failed: WebSocket opening handshake timed out)
我已经使用Ratchet和JS客户端创建了一个websocket服务器。每当JS客户端连接到服务器时,连接空闲4分钟,然后给我一个握手超时。我试过禁用防火墙,改变端口,使用另一个web浏览器,甚至试过在线教程,到目前为止都没有效果。请帮助!
服务器代码:
<?php
use Ratchet'MessageComponentInterface;
use Ratchet'ConnectionInterface;
use Ratchet'Server'IoServer;
require __DIR__ . '/vendor/autoload.php';
class RatchetWebSocketServer implements MessageComponentInterface{
public function onClose(ConnectionInterface $conn) {
}
public function onError(ConnectionInterface $conn, 'Exception $e) {
$conn->send($e->getMessage());
}
public function onMessage(ConnectionInterface $from, $msg) {
$from->send("Server returned : ".$msg);
}
public function onOpen(ConnectionInterface $conn) {
}
}
$server = IoServer::factory(new RatchetWebSocketServer(), 8888);
$server->run();
下面是JS客户端代码:
function startServer(){
try{
var socket = new WebSocket("ws://127.0.0.1:80/CharlieTaxi/RatchetWebSocketServer.php");
socket.onopen = function(){
console.log("Socket Status: "+socket.readyState);
//send message to socket server
socket.send("Hello from Alfred to Server");
socket.close();
};
socket.onmessage = function(msg){
console.log(msg.data);
// socket.close();
};
socket.onclose = function(){
console.log('connection is closed!');
};
}
catch(e){
console.log(e);
}
}
这是请求头(Chrome浏览器):
Provisional headers are shown // this line is in bold with a yellow warning sign on the left
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8-
Cache-Control:no-cache
Connection:Upgrade
Cookie:PHPSESSID=pgo5ma6o5mlh6k9mtfcad4k6d4
Host:127.0.0.1
Origin:http://127.0.0.1
Pragma:no-cache
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
Sec-WebSocket-Key:sVGKPRvSUghm1xdCgBQCsA==
Sec-WebSocket-Version:13
Upgrade:websocket
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36
这是给我超时后的控制台输出:
WebSocket connection to 'ws://127.0.0.1/CharlieTaxi/RatchetWebSocketServer.php' failed: WebSocket opening handshake timed out
这是作曲家。Json文件内容:
{
"require": {
"cboden/ratchet": "0.3.*"
}
}
您连接的websocket不正确。websocket不只是一个你要连接的文件,它必须有自己的进程。在命令行运行中,导航到存储RatchetWebSocketServer.php
的目录并运行
php RatchetWebSocketServer.php
然后在javascript连接到127.0.0.1:8888
和WebSocket应该工作。
不要忘记,每次你改变你的WebSocket代码,你需要停止php xx
命令,并重新开始。
相关文章:
- chrome在WebSocket握手期间获取新错误
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 使用优化器在慢速连接上加载main.js时需要js超时
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- Tomcat websocket is not working
- 当浏览器控制台未打开时,为什么要求会导致Internet Explorer 9超时
- 超时功能的性能
- 使用不同的超时对数组中的每个项目进行角度动画处理
- 设置第一次执行的超时
- WebSocket握手:意外的响应代码:404
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 使用javascript和随机暂停/超时快速循环文本
- Websocket赢得't打开连接
- Javascript connect to websocket
- 如何在jQuery事件处理程序中存储和重用超时
- 服务器端事件+客户端事件与Websocket
- 通过html5/websocket通过wifi传输文件
- 在 websocket 消息上生成 AJAX POST 会导致超时异常
- 棘轮WebSocket (failed: WebSocket打开握手超时)
- Javascript 客户端上的 Websocket 调用超时