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