2015-08-17 46 views
7

Tôi đã tạo một trang web PHP bằng cách sử dụng Ratchet. Websocket này đang chạy trên cổng 8080 của máy chủ nội bộ của tôi 10.0.4.160.Không thể kết nối với websocket

Tôi đang cố gắng kết nối với trang web đã bật SSL "aka sử dụng giao thức https".

Khi cố gắng kết nối với biểu mẫu web, trình duyệt FireFox, tôi gặp vấn đề bảo mật từ trình duyệt vì tôi đang trộn giữa kết nối bảo mật/không được bảo mật. Đây là lỗi mà tôi thấy trong bảng điều khiển của javascript.

SecurityError: The operation is insecure.

Để khắc phục các vấn đề an ninh Tôi tạo ra một proxy stunnel cho phép tôi để chấp nhận các kết nối trên 10.0.4.160:58443 và kết nối nó với cổng 127.0.0.1:8080. Đường hầm an toàn này sẽ cho phép tôi giữ kết nối của tôi với websocket được bảo mật và bỏ qua kiểm tra bảo mật của trình duyệt.

Tuy nhiên, mỗi khi tôi cố gắng để kết nối với WebSocket tôi nhận được một lỗi

WebSocket connection to 'wss://10.0.4.160:58443/' failed: Error in connection establishment: net::ERR_TIMED_OUT

Đây là kịch bản jQuery được sử dụng để kết nối với WebSocket

<script> 

    $(function(){ 
     if ("WebSocket" in window) 
     { 
      var conn = new WebSocket('wss://10.0.4.160:58443'); 

      conn.onopen = function(e) { 
       console.log("Connection established!"); 
       showMessage('Connected', 0); 
      }; 

      conn.onmessage = function(e) { 
       console.log(e.data); 
       showMessage(e.data, 1); 
      }; 

      conn.onclose = function(e) { 
       console.log(e.code); 
       console.log(e.reason); 
      };    

      conn.onerror = function(e) { 
       console.log(e); 
      };  

     } else { 
      console.log('Your browser does not support Websocket!'); 
     } 

     function showMessage(msg, append){ 
      if(append){ 
       $('#status').append('<br>' + msg); 
       return; 
      } 

      $('#status').text(msg); 
     } 
    }); 

</script> 

Đây là hiện tại của tôi cấu hình stunnel

[websockets] 
client = yes 
accept = 58443 
connect = 8080 
verify = 2 
CAfile = ca-certs.pem 
debug = 7 
OCSPaia = yes 

Làm cách nào để kết nối với websocket từ trình duyệt của tôi? Cảm ơn bạn

+0

Giảm bình chọn cho đến khi chúng tôi thấy máy chủ PHP của bạn được thiết lập với ratchet –

Trả lời

1

đọc thêm về html5 WebSockets tại http://www.html5rocks.com/en/tutorials/websockets/basics/

Socket.io là một thư viện socket web phổ biến đọc thêm tại www.socket.io

Không có đủ thông tin để chẩn đoán vấn đề của bạn. Vui lòng cung cấp nhật ký máy chủ.

  • Máy chủ của bạn có nhận ra nỗ lực kết nối không?
  • Máy chủ của bạn có xử lý bắt tay máy chủ khách hàng không?

Nếu máy chủ của bạn nhận ra nỗ lực kết nối thì vấn đề của bạn có nhiều khả năng là bắt tay. Không có vấn đề với JavaScript của bạn.


EXTRA THÔNG TIN:

một loại kết nối: (chúng tôi sẽ gọi đây là loại 1)

|SERVER(PHP)| <--- CONNECTION --> |SERVER(websocket)| 

những gì bạn đang sử dụng: (chúng tôi sẽ gọi đây là loại 2)

|BROWSER(client)| <----CONNECTION --> |SERVER(websocket)| 

khi sử dụng loại 1 kết nối là loại 2 kết nối bạn có nguy cơ làm tràn máy chủ web chính của bạn, điều này sẽ gây ra sự cố nghiêm trọng về hiệu suất. Máy chủ web như: Godaddy, Hostgator .. ect ..sẽ chấm dứt các kết nối đang tràn ngập các máy chủ của chúng vì chúng được xem là các cuộc tấn công DDOS.

Tôi không biết ratchet là gì, nhưng để giữ máy chủ & kết nối máy khách mở PHP sẽ cần phải mở & điều này KHÔNG BAO GIỜ KHÔNG BAO GIỜ BAO GIỜ bao giờ là một ý tưởng hay. Xem xét việc tạo một máy chủ bằng các ngôn ngữ như C# hoặc C++.

Các vấn đề liên quan