2016-07-21 15 views
0

Ich habe eine Webseite, die versucht, eine Verbindung zu einem WebSocket Node.js-Server herzustellen, und es funktioniert gut auf dem Desktop, aber nicht auf dem Handy. HierJavaScript WebSockets funktioniert nicht auf Mobilgeräten?

ist der Server:

var websocket = require("websocket").server; 
var http = require("http"); 

var port = 12348; 

var server = http.createServer(function (request, response) { 
    //console.log("server > received request for: " + request.url); 
    //response.writeHead(404); 
    //response.end(); 
}); 

server.listen(port, function() { 
    console.log("listening on port " + port); 
}); 

socket = new websocket({ 
    httpServer: server, 
}); 

socket.on("request", function (request) { 
    var connection = request.accept(null, request.origin); 
    console.log("connection accepted"); 

    connection.send("Welcome to BrD"); 
    connection.send('Type "brdhelp" for help'); 

    connection.on("message", 
    function (data) { 
     if (data.type === "utf8") { 
      var message = data.utf8Data; 

      console.log("client > " + message); 
     } 
    }); 

    connection.on("close", 
    function (reasonCode, description) { 
     console.log("server > " + connection.remoteAddress + " disconnected."); 
    }); 
}); 

Hier ist der Kunde auf der Webseite:

//Enables mozilla's built-in WebSocket if it's available 
window.WebSocket = window.WebSocket || window.MozWebSocket; 
var pageHeight = window.innerHeight ||document.documentElement.clientHeight || document.body.clientHeight || document.body.offsetHeight; 

connectToServer(); 

function connectToServer() { 
    connection = new WebSocket("ws://localhost:12348"); 

    connection.onopen = 
    function() { 
     addResponseLine("connected to server, type \"help\" for client help"); 
    }; 

    connection.onerror = 
    function (error) { 

    }; 

    connection.onmessage = 
    function (message) { 
     addResponseLine("server > " + message.data); 
    }; 

    connection.onclose = 
    function() { 
     addLine("disconnected from server, type \"reconnect\" to reconnect"); 
    }; 
} 

function checkInput() { 
    var event = window.event || event.which; 

    //When user presses enter, add input to <p> and clear the input 
    if (event.keyCode == 13) { 
     event.preventDefault(); 
     addLine(document.getElementById("textinput").value); 
     document.getElementById("textinput").value = ""; 
    } 

    //Set height of input TODO: do this when document loads 
    var newHeight = ((pageHeight - 20) - document.getElementById("consoletext").style.height); 
    if (document.getElementById("textinput").style.height != newHeight) { 
     document.getElementById("textinput").style.height = newHeight + "px"; 
    } 
} 

//This function is for outpput to the user, it doesn't check for commands 
function addResponseLine (line) { 
    var newText = document.createTextNode(line); 
    var br = document.createElement("br"); 
    document.getElementById("consoletext").appendChild(newText); 
    document.getElementById("consoletext").appendChild(br); 
} 

//This function is for adding the user's input to the <p>, it can also check for commands 
function addLine (line) { 
    if (line != "") { 
     line = line.toLowerCase(); 
     var newText = document.createTextNode(line); 
     var br = document.createElement("br"); 
     document.getElementById("consoletext").appendChild(newText); 
     document.getElementById("consoletext").appendChild(br); 

     connection.send(line); 
    } 
} 

Wie ich schon sagte, alles funktioniert gut auf dem Desktop, aber nicht mobil.

+0

Welche mobilen Browser verwenden Sie? –

Antwort

0

Sind Sie sicher, dass die Leitungsverbindung = neuer WebSocket ("ws: // localhost: 12348"); ist richtig? iwould erwarten so etwas wie

connection = new WebSocket("ws://xxx.yyy.zzz.kkk:12348"); 

expecially, wenn die NodeJS Teil in dir ist localhost ....

+1

Oh ja !! Das kann hier definitiv ein Problem sein! –