PHP
チャットを作成しようとしているので、接続をserver.php
リッスンしているターミナルでサーバーを起動します。client
<?php
function chat_leave( $sock, $chat_id = 0 )
{
if( $chat_room_id[ $chat_id ] )
{
unset( $chat_room_id[ $chat_id ] );
return true;
}
socket_close($sock);
return false;
}
function client( $input )
{
/*
Simple php udp socket client
*/
//Reduce errors
error_reporting(~E_WARNING);
$server = '127.0.0.1';
$port = 9999;
if(!($sock = socket_create(AF_INET, SOCK_DGRAM, 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't create socket: [$errorcode] $errormsg \n");
}
//Communication loop
while(1)
{
//Send the message to the server
if( ! socket_sendto($sock, $input , strlen($input) , 0 , $server , $port))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not send data: [$errorcode] $errormsg \n");
}
//Now receive reply from server and print it
if(socket_recv ( $sock , $reply , 2045 , MSG_WAITALL ) === FALSE)
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not receive data: [$errorcode] $errormsg \n");
}
return $reply;
}
}
/*
* chat_join
* a new user joins the chat
* @username: String
* @password: String
*
* add a new listener to the server
*
*/
function chat_join( $username = "", $password = "" )
{
$users = array(
"batman" => "batman123",
"robin" => "robin123",
"joe" => "joe123"
);
if( $users[$username] == $password )
{
return true;
}
return false;
}
function main()
{
$chat_room_id = array();
$username = stripslashes( $_POST['username'] );
$password = stripslashes( $_POST['password'] );
$action = stripslashes( $_POST['action'] );
$port = intval( $_POST['port'] );
$domain = stripslashes( $_POST['domain'] );
$chat_id = intval( $_POST['chat_room_id'] );
if( strcmp( $action, "login" ) == 0 )
{
$status = chat_join( $username, $password );
if( $status )
{
$chat_room_id[] = $chat_id;
echo json_encode( $status );
}
}
else if( strcmp( $action, "chat" ) == 0 )
{
$msg = stripslashes( $_POST['message'] );
// take the message, send through the client
$reply = client( $msg );
echo json_encode( $reply );
}
else if( strcmp( $action, "logout") == 0 )
{
}
else
{
echo json_encode( false );
}
return;
}
main();
?>
この関数client()
は、client.php
ファイルから取得したコードであり、端末で実行すると、からメッセージを送受信できますserver.php
。今度は自分のファイルを使用したいmain.php
ので、ユーザーがログインすると、サーバーにメッセージを送信します。サーバーは、ユーザーが見たことのないメッセージを返信します。2つの異なる端末から実行するserver.php
とclient.php
、メッセージを送受信できますが、それを使用してmain.php
、その返信メッセージをオブジェクトに変換し、ボックスに追加されるページにJSON
送り返したいと思います。私の問題は、受信した返信を取得してhtmlページに送り返すにはどうすればよいですか?ターミナルで実行すると、次のようになります。html
textarea
client.php
Enter a message to send : hello
Reply : hello
私AJAX
はチャットでユーザー入力を送信するために使用しているので、そのメッセージを取得して、端末で起動したサーバーに送信し、返信をWebページに転送して、に追加できるようにしたかったのです。テキストボックス領域。どうすればそれを達成できますか?client.php
を通じてサービスとして開始する必要がありmain.php
ますか?または、このclient($input)
関数を使用してメッセージを送信し、送信した内容を返す必要がありますか?client
ただし、他のクライアントがチャットに接続する可能性があるため、使用がログアウトするまで実行したかったのです。どうすればそれを達成できますか?のコードclient( $input )
はと同じclient.php
です。