Javascript 连接重置(PHP WebSockets)

Javascript 连接重置(PHP WebSockets),javascript,php,websocket,connection,Javascript,Php,Websocket,Connection,我试着实现和。两人最终都遇到了同样的问题:我无法连接到他们中的任何一个。Chrome和Firefox都表示连接已经重置。我使用命令行(php server.php)运行扳手服务器。这个问题很可能是由客户端引起的,因为我通常不使用Javascript。另外,奇怪的是Javascript中没有抛出异常,只是浏览器控制台中有一个错误 重要编辑: WEBSOCKET_主机设置为“localhost”,WEBSOCKET_端口设置为“9000” 此外,服务器运行在VirtualBox Ubuntu服务器上

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

重要编辑:

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

编辑2:

我能够通过命令行工具wscat连接到服务器,一切正常

server.php

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();
}
function$(id){returndocument.getElementById(id);}
无功插座;
window.onload=函数()
{   
var host=“ws:///app”;
尝试
{
套接字=新的WebSocket(主机);
socket.onopen=
功能(msg)
{ 
窗口。警报(“连接已打开!”);
};
socket.onmessage=
功能(msg)
{ 
$(“json”).innerHTML=msg;
};
socket.onclose=
功能(msg)
{ 
};
}
捕获(ex)
{ 
窗口警报(例如消息);
$(“json”).innerHTML=ex.message;
}
}
setInterval(函数()
{
if(socket!=null&&socket.readyState==1)
{
socket.send(“测试”);
}
}, 500);
window.onbeforeunload=函数()
{
socket.close();
}

try/catch不会启动,因为如果连接时出错,它只调用
socket.onclose()
函数。我会在
socket.onclose()
的内部执行
console.log(msg)
,看看它是否能帮助您调试.JSON.stringify(msg)返回“{”isTrusted“:true}”,这对我帮助不大。你能从中有所收获吗?我把它缩小到了我在virtualbox中的端口转发问题。无法理解这一点,因为try/catch不会触发,因为如果连接时出错,它只调用
socket.onclose()
函数。我会在
socket.onclose()
的内部执行
console.log(msg)
,看看它是否能帮助您调试.JSON.stringify(msg)返回“{”isTrusted“:true}”,这对我帮助不大。你能从中有所收获吗?我把它缩小到了我在virtualbox中的端口转发问题。但这并没有什么意义
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();
}