i have webpage tries connect websocket node.js server, , works fine on desktop, not on mobile.
here 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 brd"); connection.send('type "brdhelp" 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."); }); });
here client on webpage:
//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 server, type \"help\" client help"); }; connection.onerror = function (error) { }; connection.onmessage = function (message) { addresponseline("server > " + message.data); }; connection.onclose = function () { addline("disconnected server, type \"reconnect\" reconnect"); }; } function checkinput () { var event = window.event || event.which; //when user presses enter, add input <p> , clear input if (event.keycode == 13) { event.preventdefault(); addline(document.getelementbyid("textinput").value); document.getelementbyid("textinput").value = ""; } //set height of input todo: 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 outpput user, doesn't check 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 adding user's input <p>, can check 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); } }
like said, works fine on desktop, not mobile.
are sure line connection = new websocket("ws://localhost:12348"); correct? iwould expect like
connection = new websocket("ws://xxx.yyy.zzz.kkk:12348");
expecially if nodejs part in localhost....
Comments
Post a Comment