我在我的服务器中实现了Websockets,它很好地与服务器本身进行通信,但它不能直接连接到我的Delhpi应用程序,所以我想,“我只是让Delphi发送信息到PHP,然后进行PHP推送通过Websocket向客户提供信息!“,太棒了!但它不起作用。
我不知道为什么,但我认为它与2个套接字无法同时监听,所以我认为我需要使用Threads或类似的东西。
在纸面上它看起来很简单,看起来我只需要用我的函数启动一个Thread来监听我的Delphi应用程序套接字,当它收到一条消息时,我会将它发送给父进程来通过websocket推送消息,但我无法帮助它,但觉得这种策略有问题。
这是从我的Delphi应用程序的套接字读取的代码:
$modelObj=new Model();
echo $modelObj->title;
在websocket aplication类中,这个函数将messeges推送到客户端,更具体地说是循环使用“Im Waiting X Seconds”
<?php
/* Cliente */
function enviarPct($skt, $pacote){
$msg = "$pacote\n";
socket_write($skt, $msg, strlen($msg));
echo "TX: $msg";
}
error_reporting(E_ALL);
echo "Conexao TCP/IP em PHP\n";
$address = "192.168.2.26";
$port = 63333;
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, $address, $port);
socket_set_option($sock, SOL_SOCKET, SO_KEEPALIVE, 1);
echo "Conexao: $address:$port\n\n";
enviarPct($sock,"login||20||");
//$msg = "login||20||\n";
//echo socket_write($sock, $msg, strlen($msg));
//echo socket_write($sock, utf8_encode($msg), mb_strlen($msg, 'utf-8'));
echo "Reading response:\n\n";
while ($out = socket_read($sock, 2048)) {
echo "RX: $out";
$pct = explode('||', $out);
if($pct[0]=='sucessoLogin'){
if($pct[1]!= '-1'){
enviarPct($sock, "solicitaControladoras||||");
}
}
}
//echo socket_read($sock, 2048);
echo "Fechando\n";
socket_close($sock);
?>
就这样,如果有人知道什么对我最有用,我会很高兴听。