2014-05-02 23 views
6

Tôi đang làm việc trên một ứng dụng cần Websocket để giao tiếp với máy chủ của tôi. Tôi đang làm việc với Phonegap để tôi có thể chạy tất cả mã trước hết trong trình duyệt của mình. Kể từ Android 4.4 Websockets có nguồn gốc hỗ trợ trong Android vì thế nên làm việc ... tôi đã thực hiện các WebSocket với mã này:Websocket trên Android 4.4 với Phonegap

$(document).ready(function() { 
    console.log('websocketready'); 
    startwebsocket(); 
}); 
var ws; 

function startwebsocket() { 
    ws = new WebSocket('ws://192.168.1.131:8080/.....'); 

    ws.onopen = function() { 
     console.log("Websocket Ready!!"); 
    } 
    ws.onclose = function() { 
     console.log("Websocket Closed!!"); 
    } 
    ws.onerror = function() { 
     console.log("Websocket Error!!"); 
    } 
    ws.onmessage = function (data) { 
     console.log('getvalue : ' + data.data); 
    } 
} 

function sendMessage(temp) { 
    ws.send(temp); 
} 

này chỉ đang làm việc tốt trong trình duyệt của tôi (Chrome và firefox). Nhưng nếu tôi bắt đầu ứng dụng với Phonegap trên Nexus 5 của tôi với Android 4.4.2, tôi nhận được: 'Kết nối WebSocket với' ws: //192.168.1.131: 8080/..... 'không thành công: Mã phản hồi không mong muốn: 403 '

Bạn có bất cứ đề xuất nào mà tôi có thể đã bỏ lỡ hoặc những gì tôi đã làm sai?

+0

thử thêm res.header ('Access-Control-Allow-Origin', "*"); trong chức năng của bạn trong máy chủ. – rishal

+0

Xin cảm ơn câu trả lời của bạn, nhưng tôi không hiểu đối tượng 'res' nào nên? – TobiasW

+0

Rất tiếc, tôi nghĩ bạn đã sử dụng node.js làm máy chủ của mình. bạn cần thêm quyền truy cập-cho phép-kiểm soát nguồn gốc trong máy chủ của mình để cho phép thiết bị di động của bạn giao tiếp với ổ cắm. – rishal

Trả lời

0

Bạn có cung cấp 192.168.1.131 làm nguồn gốc được ủy quyền cho cordova không?

Có lẽ bạn nên cố gắng thêm rằng để config.xml của bạn:

<access origin="192.168.1.131" /> 

Hãy xem here để biết thêm thông tin.

Hy vọng trợ giúp :)

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