我正在尝试创建一个
PHP聊天,所以我有server.PHP在终端上启动服务器,这是监听客户端连接:
原文链接:https://www.f2er.com/php/137461.html<?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),$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文件,因此一旦用户登录,他将向服务器发送消息,服务器将回复用户未看到的消息.
当我从两个不同的终端运行server.PHP和client.PHP时,我能够发送和接收消息,但是我想使用main.PHP这样做,将该回复消息转换为JSON对象并发送回html页面,它将被附加到textarea框.
我的问题是:如何获得client.PHP收到的回复并将其发送回html页面?
当我在终端上执行它时,我有:
Enter a message to send : hello Reply : hello
我使用AJAX在聊天中发送用户输入,所以我希望能够接收该消息,并将其发送到服务器,我在终端上启动并回复并转发到网页并将其附加到文本框区域.
我怎么能做到这一点?我应该通过main.PHP启动client.PHP作为服务吗?或者我应该使用客户端($input)函数发送消息,然后返回它发送的内容,返回?
但是,我希望该客户端在用户注销之前一直运行,因为其他客户端可能会连接到聊天.我怎么能做到这一点对我来说有点模糊.客户端($input)中的代码与client.PHP中的代码相同.