2012-05-16 12 views
8

मुझे PHP में एक WSS कनेक्शन स्थापित करने के बारे में कोई जानकारी नहीं मिल रही है। मुझे फेंकने के लिए कोई समस्या नहीं है। मैं इस खूबसूरत लाइब्रेरी का उपयोग इस तरह से करने के लिए कर रहा हूं: https://github.com/albeva/php-websocketPHP के साथ WebSocket सुरक्षित कनेक्शन कैसे सेट करें?

लेकिन मेरी वेबसाइट https का उपयोग करती है और मुझे फ़ायरफ़ॉक्स से बचने के लिए वेबसाइकिल सुरक्षित कनेक्शन की आवश्यकता है ताकि कनेक्शन असुरक्षित हो।

आपकी मदद के लिए अग्रिम धन्यवाद।


संपादित

यहाँ पुस्तकालय द्वारा प्रयोग किया जाता गर्तिका कनेक्शन शुरू करने के लिए कोड है:

$master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
if (!is_resource($master)) { 
    $this->throwSocketError(); 
} 

// set options 
if (!socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1)) { 
    $this->throwSocketError(); 
} 

// bind 
if (!socket_bind($master, $this->host, $this->port)) { 
    $this->throwSocketError(); 
} 

// listen for connections 
if (!socket_listen($master, SOMAXCONN)) { 
    $this->throwSocketError(); 
} 

मेरा मानना ​​है कि मैं इस कोड को बदलने की जरूरत है, लेकिन मैं कैसे नहीं मिल सकता है ।

उत्तर

1

पीएचपी पर आपका सबसे अच्छा शॉट वर्तमान में Ratchet उपयोग करने के लिए है। एक wss कनेक्शन सेट करने का सबसे अच्छा तरीका है, अपने वेबस्केट सर्वर को Nginx या HAProxy के पीछे रखना है जो आपके लिए सभी SSL सामानों को संभालेगा। यह HAPROxy के साथ here समझाया गया है। ध्यान दें कि आप Nginx के साथ ऐसा ही कर सकते हैं क्योंकि यह अब वेबसॉकेट का समर्थन करता है।

2

यहां एक उदाहरण (और लिंक) है, जिसे थोड़ा संशोधित किया गया था, और एक और एसओ पोस्ट से मिला। Link to other post

और यहां stream_context_create php फ़ंक्शन परिभाषा का एक लिंक है। function definition

try 
{ 
    $localCertificateFilespec = $connection['localCertificateFilespec']; 
    $localCertificatePassphrase = $connection['localCertificatePassphrase']; 

    $sslOptions = array( 
     'ssl' => array( 
      'local_cert' => $localCertificateFilespec, 
      'passphrase' => $localCertificatePassphrase, 
      'allow_self_signed' => true, 
      'verify_peer' => false 
     ) 
    ); 
    $sslContext = stream_context_create($sslOptions); 

    $clientArguments = array( 
     'stream_context' => $sslContext, 
     'local_cert' => $localCertificateFilespec, 
     'passphrase' => $localCertificatePassphrase, 
     'trace' => true, 
     'exceptions' => true, 
     'encoding' => 'UTF-8', 
     'soap_version' => SOAP_1_1 
    ); 

    $oClient = new WSSoapClient($connection['wsdlFilespec'], $clientArguments); 
    $oClient->__setUsernameToken($connection['username'], $connection['password']); 

    return $oClient->__soapCall($operation, $request); 
} 

हालांकि, जुड़ा हुआ अतः पद के बिल्कुल नीचे, आप "सैम" से एक जवाब मिल जाएगा। मुझे अगले कुछ हफ्तों में यह वही करने की ज़रूरत है, इसलिए मैं सैम विधि का उपयोग करने की योजना बना रहा हूं ... क्योंकि मैं PHP के भीतर कर्ल के प्रशंसक हूं।

+0

मैंने अपनी पोस्ट को लाइब्रेरी के स्टार्ट फ़ंक्शन (जो PHP सॉकेट एक्सटेंशन का उपयोग करते हैं) दिखाने के लिए अपडेट किया है। मैंने पहले ही उस पोस्ट को पढ़ा था जिसे आप इंगित कर रहे हैं लेकिन यह इस कोड के साथ काम करने में सक्षम नहीं था। –

4

क्या आपने stream_socket_server को आजमाया था?

<?php 
$socket = stream_socket_server("ssl://0.0.0.0:".$port, $errno, $errstr); 
if (!$socket) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    while ($conn = stream_socket_accept($socket)) { 
    fwrite($conn, 'some data...\n'); 
    fclose($conn); 
    } 
    fclose($socket); 
} 
?> 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^