我有这个JS代码,正在尝试连接到WebSocket,但是我对URL变量有疑问。
var tipoChat = 1;
var escolherWebSocket = 1;
var unidade = prompt('Qual o IP do Provador?');
var loja = prompt('Qual o codigo da Loja?');
var url;
ws = new WebSocket(url);
// tipoChat 1 Produto
// tipoChat 2 Vendedor
// tipoChat 3 Atendente
function chatProduto() {
tipoChat = 1;
$("#btnProduto").addClass("btn-menuStyle-active");
$("#btnAtendente").removeClass("btn-menuStyle-active");
$("#btnVendedor").removeClass("btn-menuStyle-active");
$("#provador-produto").removeClass("show-chat1");
$("#provador-produto").removeClass("show-chat2");
}
function chatVendedor() {
tipoChat = 2;
$("#btnProduto").removeClass("btn-menuStyle-active");
$("#btnAtendente").removeClass("btn-menuStyle-active");
$("#btnVendedor").addClass("btn-menuStyle-active");
$("#provador-produto").addClass("show-chat2");
$("#provador-produto").removeClass("show-chat1");
}
function chatAtendente() {
tipoChat = 3;
$("#btnProduto").removeClass("btn-menuStyle-active");
$("#btnAtendente").addClass("btn-menuStyle-active");
$("#btnVendedor").removeClass("btn-menuStyle-active");
$("#provador-produto").addClass("show-chat1");
$("#provador-produto").removeClass("show-chat2");
}
function conectar() {
$('#btnConectar').hide();
$('#btnDesconectar').show();
ws.onopen = function () {
$('#messages').prepend('Connected <br/>');
$('#cmdSend').click(function () {
ws.send($('#txtMessage').val());
$('#txtMessage').val('');
});
}
}
switch (tipoChat) {
case "1": // Chat Produto
switch (escolherWebSocket) {
case "1": //CBYK
var url = 'ws://example0';
break;
case "2": //Centauro
var url = 'ws://example0';
break;
default:
alert("Código de Socket Inválido");
}
case "2": // Chat Vendedor
switch (escolherWebSocket) {
case "1":
var url = 'ws://example0';
break;
case "2":
var url = 'ws://example0';
break;
default:
alert("Código de Socket Inválido");
}
case "3": //Chat atendente
switch (escolherWebSocket) {
case "1":
var url = 'ws://example0';
break;
case "2":
var url = 'ws://example1';
break;
default:
alert("Código de Socket Inválido");
}}
这是我在控制台上的错误:
未捕获的DOMException:无法构造“WebSocket”:URL“未定义”无效。
有人可以说为什么Switch没有设置Url变量? 它仅在我在控制台上分配值时才有效。
修改:
出于某种原因,当我在控制台上调用URL变量时,结果是未定义的,即使我在切换后初始化WebSocket。我真的不知道为什么没有定义URL变量
var typeChat = 1;
var escolherWebSocket = 1;
var url;
switch (typeChat) {
case "1": // Chat Produto
switch (escolherWebSocket) {
case "1": //CBYK
var url = 'ws://example0';
break;
case "2": //Centauro
var url = 'ws://example0';
break;
default:
alert("Código de Socket Inválido");
}
case "2": // Chat Vendedor
switch (escolherWebSocket) {
case "1":
var url = 'ws://example0';
break;
case "2":
var url = 'ws://example0';
break;
default:
alert("Código de Socket Inválido");
}
case "3": //Chat atendente
switch (escolherWebSocket) {
case "1":
var url = 'ws://example0';
break;
case "2":
var url = 'ws://example1';
break;
default:
alert("Código de Socket Inválido");
}}
ws = new WebSocket(url);
答案 0 :(得分:0)
只需初始化&#39; url&#39;变量在顶部。因为您正在创建一个带有&#39; url&#39;变量而不首先初始化它。所以&#39; url&#39;变量目前尚未定义。
或者您创建了分配给&#39; url&#39;的套接字。变量,即在开关块情况下。
答案 1 :(得分:0)
您无法使用未定义的网址初始化WebSocket
,就像您在这里一样:
var url;
ws = new WebSocket(url);
在初始化switch
之前,您应该执行new WebSocket(url)
声明。
var url;
switch (tipoChat) {
case 1:
url = 'foo';
}
ws = new WebSocket(url);