Javascript websocket не останется открытым? - PullRequest
0 голосов
/ 30 марта 2020

Я создаю javascript чат WebSocket, но сразу после открытия он снова закрывается. Код достаточно длинный для онлайн-форума, но если он вам понадобится, я с радостью его вам предоставлю. Я также использую chrome. Вот код:

window.onbeforeunload = function() {
  socket.send("alert('" + username + " has disconnected from the server.')");
  socket.close();
}
var username = prompt("Enter your name (It name will be displayed to others)")
var socket = new WebSocket("MY_WEBSOCKET_URL");
socket.onopen = function() {
  socket.send("otherusers();");
  alert("Connected to server. Press 'esc' to disconnect. Type 'send' to send something.");
  alert("The users on this server will be displayed shortly (if any)")
  socket.send("alert('A new user has connected with the username " +
    username + ".')")
};
socket.onclose = function() {
  alert("Disconnected from server.")
}
socket.onerror = function(e) {
  alert("There was a server error: " + e.data);
}
socket.onmessage = function(e) {
  eval(e.data);
  //create history
  save(e.data);
}

window.addEventListener("keydown", keydown);
window.addEventListener("keyup", keyup);

var s = false;
var ee = false;
var n = false;

function keydown(e) {
  //send
  if (e.keyCode == 83) {
    s = true;
  }
  if (e.keyCode == 69) {
    if (s == true) {
      ee = true;
    }
  }
  if (e.keyCode == 78) {
    if (ee == true) {
      n = true;
    }
  }
  if (e.keyCode == 68) {
    if (n == true) {
      s = false;
      e = false;
      n = false;
      var message = prompt("What message would you like to send? (Type 'Stop' to send nothing)");
      send(message);
    }
  }
  if (e.keyCode == 192) {
    var messages = document.getElementsByClassName("ALINTIOKNALSFJI");
    for (var i = 0, max = messages.length; i < max; i++) {
      messages[i].setAttribute("style", "color: black; background-color: white;");
    }
  }
  if (e.keyCode == 27) {
    socket.send("alert('" + username + " has disconnected from the server.')");
    socket.close();
    window.removeEventListener("keydown", keydown);
    window.removeEventListener("keyup", keyup);
  }
}

function keyup(e) {
  if (e.keyCode == 192) {
    var messages = document.getElementsByClassName("ALINTIOKNALSFJI");
    for (var i = 0, max = messages.length; i < max; i++) {
      messages[i].setAttribute("style", "color: transparent; background-color: transparent;");
    }
  }
}

function send(message) {
  if (message !== "Stop") {
    socket.send("alert('Message recieved from " + username + ": " + message + "');");
    save("alert('Message sent: " + message + "');");
  }
}

function otherusers() {
  socket.send("alert('User on server: " + username + "');")
}

function save(message, float) {
  var p = document.createElement("p");
  p.innerHTML = message;
  if (!float) {
    float = "left";
  }
  p.setAttribute("style", "color: transparent; z-index: 1000000; background-color: transparent; float: " + float + ";");
  p.setAttribute("class", "ALINTIOKNALSFJI")
  document.body.appendChild(p);
}

Это дает мне эту ошибку:

SyntaxError: Unexpected token ':'
at WebSocket.socket.onmessage (/hackertools/chat.js:20:10)

К вашему сведению, это букмарклет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...