Сокеты PHP: отправка успешна, но невозможно получить ответ

Я реализую веб-службу, которая отправляет сообщения HL7 через протокол MLLP нескольким поставщикам услуг. На практике это должно быть так же просто, как отправка действительной строки, окруженной <VT> а также <FS><CR>. Итак, что-то вроде (это псевдокод):

      $socket = create_socket($destIp, $destPort);
$socket->send("\013".$hl7Message."\034\015");
$response = $socket->read();

Я использовал для этого эту библиотеку ( в частности, код отправки находится в этом файле ), которая использует socket_create(), socket_write()а также . Он работает отлично, за исключением одного поставщика услуг, у которого истекает время ожидания данных. Используя tcpdump, я вижу, что данные успешно отправлены, пакет с ответом получен, но PHP не может получить данные ответа через socket_read().

Чтобы быть уверенным, я попытался переопределить его с помощью потоковых сокетов, поэтому я использовал функции stream_socket_client(), stream_socket_sendto() а также stream_socket_recvfrom()на в остальном в основном идентичной функции. Результат почти такой же.

Mirth , Java-платформа для обработки сообщений HL7, не имеет проблем с отправкой этому провайдеру. У меня тоже нет проблем с отправкой сообщений Мирту. Единственная проблема заключается в том, что я получаю их ответы при отправке напрямую.

Учитывая, что это транснациональная компания, а я - программист-фрилансер, я хотел бы знать, что еще я могу сделать, чтобы выяснить, в чем проблема, и, если возможно, как ее решить. Любые намеки на то, как отладить это, или альтернативные способы реализации этого (не полагаясь на посредников - я знаю, что могу отправить сообщения в Mirth, и он отправит их поставщику услуг, но это дополнительная точка отказа, я бы хотел чтобы избежать) были бы весьма признательны.

0 ответов

Другие вопросы по тегам