1

基本的な cURL のみを使用して、PHP (CLI) から Node.js/Sockets.IO アプリケーションに GET または POST 要求を送信しようとしています。これは私がこれまでに持っているものです.node.jsに(cliから)応答が来るのを見ることができますが、それ以上は得られません. 現在、コンソールに送信されるパラメーターのみが必要です。(後で詳しく説明できます)

どんな助けでも素晴らしいでしょう!

(FYI: 私はSocket.io from php sourceを見ましたが、もっと助けが必要です。正確なコードは素晴らしいでしょう)

PHP

$qry_str = "?msg_from_php=This_is_a_test123&y=20"; 
$ServerAddress = 'http://10.1.1.69/socket.io/1/websocket/TICWI50sbew59XRE-O';
$ServerPort = '4000';
$TimeOut = 20;
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $ServerAddress. $qry_str);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($ch, CURLOPT_PORT, $ServerPort);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $TimeOut);
curl_setopt($ch, CURLOPT_TIMEOUT, '3');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);

// not sure if it should be in an array
//$data = array('msg_from_php' => 'simple message!');
//curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$content = trim(curl_exec($ch));
curl_close($ch);
echo "  Sent! Content: $content  \r\n";

Node.JS

var express = require('express'), http = require('http');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);

io.configure('production', function(){
    io.enable('browser client minification');
    io.enable('browser client etag'); 
    io.enable('browser client gzip'); 
    io.set('log level', 1); 
    io.set('transports', ['websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']);
    io.set("polling duration", 30); 
});
server.listen(4000);  // 80,443, 843, 4000, 4001

io.sockets.on('connection', function (socket) {
    socket.on('msg_from_php, function (data) {
        console.log(data);
    });
});
4

1 に答える 1

2

socket.ioサーバーへの通常のHTTP接続を確立しようとしていますが、socket.ioはプレーンHTTPを話しません。少なくとも特殊なハンドシェイクプロトコルを使用し、WebSocketトランスポートを使用する場合は、HTTPをまったく使用しません。AFAIKにはsocket.ioクライアントのPHP実装はありません。

幸い、PHPアプリケーションは独自の条件でノードアプリケーションに送信する必要があるようです。その逆ではないため、expressを使用して、RESTfulインターフェイスを実装するためのいくつかのルートを定義するだけです。PHPアプリは、cURLを使用して、適切なルートに対応するURLにPOSTできます。

于 2012-09-26T16:06:24.583 に答える