连接重置(PHP WebSockets)

时间:2017-08-25 16:04:05

标签: javascript php websocket connection

我尝试同时实施PHP-WebSocketWrench。两者都遇到了同样的问题:我无法连接到其中任何一个。 Chrome和Firefox都表示连接已重置。我使用命令行(php server.php)运行我的扳手服务器。问题很可能是由客户端引起的,因为我通常不会使用Javascript。另外,奇怪的是,Javascript中没有抛出任何异常,浏览器控制台中只有一个错误。

重要编辑:

WEBSOCKET_HOST设置为“localhost”,WEBSOCKET_PORT设置为“9000” 此外,服务器正在使用端口转发的VirtualBox Ubuntu服务器上运行,尽管我从未遇到过问题,ssh和http端口转发工作正常。

编辑2:

我可以通过命令行工具wscat连接到服务器就好了。

server.php

require_once(__DIR__."/../../composer/vendor/autoload.php");

use Wrench\Application\Application;
use Wrench\Application\NamedApplication;
use Wrench\Application\EchoApplication;

$server = new \Wrench\BasicServer('ws://' . WEBSOCKET_HOST .  ':' . WEBSOCKET_PORT, array(
    'allowed_origins' => array(
        HTTP_HOST,
    )
));

$server->registerApplication("app", new EchoApplication());
$server->run();

client.js:

function $(id){ return document.getElementById(id); }

var socket;

window.onload = function()
{   
    var host = "ws://<?php echo WEBSOCKET_HOST . ":" . WEBSOCKET_PORT ?>/app";
    try
    {
        socket = new WebSocket(host);

        socket.onopen    = 
        function(msg)
        { 
            window.alert("Connection Opened!");
        };
        socket.onmessage = 
        function(msg)
        { 
            $("json").innerHTML = msg;
        };
        socket.onclose   = 
        function(msg)
        { 

        };
    }
    catch(ex)
    { 
        window.alert(ex.message);
        $("json").innerHTML = ex.message;
    }
}

setInterval(function()
{
    if(socket != null && socket.readyState == 1)
    {
        socket.send("test");
    }
}, 500);

window.onbeforeunload = function()
{
    socket.close();
}

0 个答案:

没有答案