如何使用websocket将javascript页面连接到php页面?
我正在尝试用JavaScript页面和php页面(LOCALHOST/socket/socket\u server2.php)建立websocket连接 我启动套接字(如何使用websocket将javascript页面连接到php页面?,javascript,php,websocket,Javascript,Php,Websocket,我正在尝试用JavaScript页面和php页面(LOCALHOST/socket/socket\u server2.php)建立websocket连接 我启动套接字(LOCALHOST/socket/socket\u server2.php),然后打开JavaScript页面,但生成以下错误: 到“ws://localhost/socket/socket\u server2.php”的WebSocket连接 失败: 我做错了什么 我正在使用xampp在本地机器上尝试此功能 <scrip
LOCALHOST/socket/socket\u server2.php
),然后打开JavaScript页面,但生成以下错误:
到“ws://localhost/socket/socket\u server2.php”的WebSocket连接
失败:
我做错了什么
我正在使用xampp在本地机器上尝试此功能
<script>
websocket = new WebSocket('ws://LOCALHOST/socket/socket_server2.php');
websocket.onopen = function(event) {
showMessage("<div >Connection is established!</div>");
console.log(event)
}
websocket.onmessage = function(event) {
$("#server").val(event.data);
//showMessage("<div >Messaggio dal server:"+event.data+"</div>");
console.log(event)
};
websocket.onerror = function(event){
showMessage("<div >Problem due to some Error:"+event+"</div>");
console.log(event)
};
websocket.onclose = function(event){
showMessage("<div >Connection Closed</div>");
console.log(event)
// Connection closed.
// Firstly, check the reason.
if (event.code != 1000) {
// Error code 1000 means that the connection was closed normally.
// Try to reconnect.
if (!navigator.onLine) {
alert("You are offline. Please connect to the Internet and try again.");
}
}
};
</script>
websocket=newwebsocket('ws://LOCALHOST/socket/socket_server2.php');
websocket.onopen=函数(事件){
showMessage(“连接已建立!”);
console.log(事件)
}
websocket.onmessage=函数(事件){
$(“#server”).val(event.data);
//showMessage(“消息服务器:“+event.data+”);
console.log(事件)
};
websocket.onerror=函数(事件){
showMessage(“由于某些错误导致的问题:+event+”);
console.log(事件)
};
websocket.onclose=函数(事件){
showMessage(“连接已关闭”);
console.log(事件)
//连接已关闭。
//首先,检查原因。
如果(event.code!=1000){
//错误代码1000表示连接正常关闭。
//尝试重新连接。
如果(!navigator.onLine){
警报(“您处于脱机状态。请连接到Internet并重试。”);
}
}
};
PHP:
您的PHP似乎创建了一个基本的TCP套接字,而不是websocket。它们不是一回事。可能对你有帮助。所以这两段代码不能一起工作?没错,是的。您需要使用(或实现)一些运行WebSocket服务器而不是普通TCP服务器的PHP代码。有关websockets和TCP套接字之间的差异的更多信息,请参阅。我只是尝试使用这家伙的代码,它可以工作。可能我上面发布的代码中有一些错误并阻止了连接。无论如何,谢谢你,我会阅读你提供的链接。可能我上面发布的代码有一些错误
…没有。上面代码的问题在于它没有创建websocket。我已经解释过了。这不是一个错误,只是它做了一个不同的任务。
<?php
error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
$port = 8000;
$address = 'localhost';
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() failed: reason1: " . socket_strerror(socket_last_error()) . "\n";
}
if (socket_bind($sock, $address,$port) === false) {
echo "socket_bind() failed: reason2: " . socket_strerror(socket_last_error($sock)) . "\n";
}
if (socket_listen($sock, 5) === false) {
echo "socket_listen() failed: reason3: " . socket_strerror(socket_last_error($sock)) . "\n";
}
socket_set_nonblock($sock);
do {
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accept() failed: reason4: " . socket_strerror(socket_last_error($sock)) . "\n";
break;
}
/* Send instructions. */
$msg = "\nWelcome to the PHP Test Server. \n" .
"To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));
do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason5: " . socket_strerror(socket_last_error($msgsock)) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
$talkback = "PHP: You said '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
?>