मैं एक 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
फ़ाइल का उपयोग करना चाहूंगा, इसलिए उपयोगकर्ता लॉग इन होने के बाद वह सर्वर पर संदेश भेजेगा, जो उन संदेशों को वापस जवाब देगा जिन्हें उपयोगकर्ता ने नहीं देखा है। जब मैं 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
शुरू करना चाहिए? या मुझे संदेश भेजने के लिए client($input)
फ़ंक्शन का उपयोग करना चाहिए और फिर उसे वापस भेजना चाहिए, वापस? हालांकि, मैं चाहता था कि client
उपयोग लॉग होने तक चलने के लिए, क्योंकि अन्य क्लाइंट चैट से कनेक्ट हो सकते हैं। मैं कैसे पूरा कर सकता हूं कि मेरे लिए यह अस्पष्ट है। client($input)
में कोड client.php
जैसा ही है।
http://stackoverflow.com/questions/2055020/php-chat-client – sdolgy
यह भी ध्यान रखें कि PHP को एक से अधिक अनुरोध चलाने के लिए डिज़ाइन नहीं किया गया है। लंबे समय तक चल सकता है (थोड़ी देर पहले चैट बॉट किया था) लेकिन यदि आप बहुत सावधान नहीं हैं तो आपको स्मृति को तोड़ने और दुर्घटनाग्रस्त होने का उच्च जोखिम है। निवासी ऐप्स के लिए अन्य भाषाएं अधिक उपयुक्त हो सकती हैं। – ToBe