Red de conocimiento informático - Material del sitio web - Cómo conectarse usando MessageWebSocket

Cómo conectarse usando MessageWebSocket

Requisitos previos:

Los siguientes ejemplos utilizan JavaScript y se basan en los ejemplos de WebSocket. Para obtener ayuda general para crear aplicaciones de Windows Runtime que usan JavaScript, consulte Crear su primera aplicación de Windows Runtime que usa JavaScript. Además, este tema utiliza JavaScript Promise para completar operaciones asincrónicas. Para obtener más información sobre este patrón de programación, consulte Programación asincrónica con promesas en JavaScript.

Para que su aplicación Windows Runtime utilice la red, debe configurar las capacidades de red requeridas en el archivo Package.appxmanifest de su proyecto. Si su aplicación necesita conectarse como cliente a un servicio remoto en Internet, debe utilizar la función "Internet (Cliente)". Si su aplicación necesita conectarse como cliente a un servicio remoto en su red doméstica o laboral, necesita la función "Red doméstica/trabajo".

Tenga en cuenta que en Windows Phone, solo una función de red ("Internet (cliente y servidor)") admite todo el acceso a la red para las aplicaciones.

Para obtener más información, consulte Cómo configurar funciones de red.

Envío de datos mediante MessageWebSocket

El código de esta sección creará un nuevo MessageWebSocket, se conectará al servidor WebSocket y luego enviará datos al servidor. Una vez que la conexión se establece correctamente, la aplicación espera a que se llame al evento MessageWebSocket.MessageReceived, lo que indica que se han recibido los datos.

Nota: Es posible que desee mostrar un mensaje al usuario o incluir un registro de los eventos que han ocurrido (por ejemplo, cuando se inicia una conexión o se produce un error).

Abre la carpeta js. Abra el archivo .js y agregue el siguiente código.

JavaScript

función startSend() {

if (!messageWebSocket) {

var webSocket = nuevo Windows.Networking.Sockets. MessageWebSocket();

// MessageWebSocket admite mensajes utf8 y binarios.

// Al especificar utf8 como tipo de mensaje, el desarrollador

// promete enviar solo datos codificados en utf8.

webSocket.control.messageType = Windows.Networks.SocketMessageType.utf8;

//Establecer devolución de llamada

webSocket.onmessageereceived = onMessageReceived;

webSocket.onclosed = onClosed;

var serverAddress = new Windows.Foundation.Uri(document.getElementById("serverAddress").value);

prueba {

webSocket.connectAsync(serverAddress).done(function () {

messageWebSocket = webSocket;

// La codificación predeterminada de DataWriter es utf8.

messageWriter = nuevo Windows.Storage.Streams.DataWriter(webSocket.outputStream);

messageWriter.writeString(document.getElementById("inputField").value);

messageWriter.storeAsync(.done).function ()storeAsync().done("", sendError);

}, función (error) {

// Conexión Error; agregue su propio código para registrar o mostrar

// el error, o para realizar una acción específica.

});

} catch (error) {

// Se produjo un error al intentar conectar. Agregue su propio código a

;

// Registra o muestra errores, o realiza acciones específicas.

messageWriter.writeString(document.getElementById("inputField" ).value);

messageWriter.storeAsync().done("", sendError);

}

}

Registro de devoluciones de llamada para el evento MessageWebSocket.MessageReceived

Cuando se produce el evento MessageWebSocket.MessageReceived, la devolución de llamada registrada se llamará y se recibirá en los datos de MessageWebSocketMessageReceivedEventArgs. .

Agrega el siguiente código en el archivo .js.

JavaScript

función onMessageReceived(args) {

// El mensaje entrante se ha almacenado en el buffer.

var dataReader = callback for args.Closed event

Cuando ocurre el evento MessageWebSocket.Closed, se llamará a la devolución de llamada registrada y recibirá datos de WebSocketClosedEventArgs para cerrar la conexión.

Agregue el siguiente código en el archivo .js.

JavaScript

función onClosed(args) {

// Puedes agregar código para registrar o mostrar el código cerrado y el motivo

// (almacenado en args.code y args.reason)

if (messageWebSocket) {

messageWebSocket.close();

}

mensajeWebSocket = nulo;

}