wakurth
wakurth

Reputation: 1644

JavaScript WebSocket Try's to open...then closes with no error

I'm trying to vet out how WebSockets HTML5 and JavaScript work. I'm seeing no errors, but instead appears to just hang for a bit, and then call the closed callback. Not sure what I'm doing wrong, but I would think the onopen callback function to get called here.

            var socket;

            window.onload = function(argument) {

                try
                {

                    document.getElementById("console").innerHTML = "Opening WebSocket...";

                    socket = new WebSocket("ws://undergroundtechnetwork.com:8080/");

                    socket.onopen = function(){
                        document.getElementById("console").innerHTML += "<br />WebSocket opened.";
                    }

                    socket.onmessage = function(message){
                        document.getElementById("console").innerHTML += "<br />WebSocket recieved a message: " + message;
                    }

                    socket.onclose = function(){  

                         document.getElementById("console").innerHTML += "<br />WebSocket status: " + GetSocketStateName(socket.readyState);  
                    }

                    socket.onerror = function(e){
                    document.getElementById("console").innerHTML += "<br />WebSocket error message:<br />" + JSON.stringify(e);
                }


                }catch(e){
                    document.getElementById("console").innerHTML += "<br />Exception: " + e;
                }

            }

            function GetSocketStateName(state){
                var strSocketState;

                if(socket.readyState == 0){
                    strSocketState = "Connecting";
                }else if(socket.readyState == 1){
                    strSocketState = "Open";
                }else if(socket.readyState == 2){
                    strSocketState = "Closing";
                }else if(socket.readyState == 3){
                    strSocketState = "Closed";
                }

                return strSocketState;
            }

Update:

This is the error I'm getting in the on error. I don't get an error for 8080, but that's because it's not actual open ( its a hosting service server )

{"cancelBubble":false,"returnValue":true,"srcElement":{"binaryType":"blob","extensions":"","protocol":"","bufferedAmount":0,"readyState":0,"url":"ws://undergroundtechnetwork.com/","URL":"ws://undergroundtechnetwork.com/"},"defaultPrevented":false,"timeStamp":1369930726244,"cancelable":false,"bubbles":false,"eventPhase":2,"currentTarget":{"binaryType":"blob","extensions":"","protocol":"","bufferedAmount":0,"readyState":0,"url":"ws://undergroundtechnetwork.com/","URL":"ws://undergroundtechnetwork.com/"},"target":{"binaryType":"blob","extensions":"","protocol":"","bufferedAmount":0,"readyState":0,"url":"ws://undergroundtechnetwork.com/","URL":"ws://undergroundtechnetwork.com/"},"type":"error"}

Upvotes: 1

Views: 3461

Answers (1)

Erlik
Erlik

Reputation: 698

Your JavaScript seems to be OK. If you change

socket = new WebSocket("ws://undergroundtechnetwork.com:8080/");

to let's say

socket = new WebSocket("ws://echo.websocket.org");

it works fine. Try tweaking your WebSocket server instead.

Upvotes: 1

Related Questions