Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-01-31 GMT+08:00

Ejemplo

Escenarios

Esta sección describe la secuencia de llamadas a las API para establecer una conexión a WebSocket, suscribirse a información, enviar información y mantener la conexión.

Proceso de servicio

La siguiente figura muestra el establecimiento de conexión WebSocket, la suscripción y el proceso de envío de información.

Figura 1 Proceso de envío de mensajes WebSocket
  1. Una aplicación de terceros obtiene un token de control de reunión y la URL del servidor requerida para establecer una conexión a WebSocket mediante la ID de reunión y la contraseña del host. Para más detalles, consulte Obtención de un token de control de reuniones.
  2. La aplicación de terceros utiliza el token de control de reunión para obtener un token para establecer una conexión a WebSocket. Para más detalles, consulte Obtención de un token para establecer una conexión a WebSocket.
  3. La aplicación de terceros establece una conexión WebSocket con el servidor.
  4. La aplicación de terceros se suscribe a la información que necesita ser enviada por el servidor de Huawei Cloud Meeting.
  5. El servidor de Huawei Cloud Meeting envía la información suscrita.
  6. La aplicación de terceros envía un mensaje de latido al menos una vez en 180 segundos.

Ejemplo de código 1

Código para el establecimiento de conexión a WebSocket, la suscripción y la entrega y recepción de mensajes

<!DOCTYPE HTML>
<html>
   <head>
   <meta charset="utf-8">
   <title>WebSocket Connection Establishment and Message Delivery and Receiption</title>
      <script type="text/javascript">
         function WebSocketTest()
         {
            if ("WebSocket" in window)
            {
               // Establish a WebSocket connection.
		var confID = "900964776";
		var tempToken = "&tmpToken=" + "cnr8bee7b054df0baf766d5abca1f9d3e63a5896bdb603de7a4";
		var uri = "wss://100.94.23.40:443/cms/open/websocket/confctl/increment/conn?confID=" + confID + tempToken;
               var ws = new WebSocket(uri);

               ws.onopen = function()
               {
                // WebSocket connection established. Send a subscription message.
		var senddata = JSON.stringify({
			sequence: "000000000000000002611382273415",
			action: "Subscribe",
			data: JSON.stringify({
			subscribeType: [
			"ConfBasicInfoNotify",
			"ConfDynamicInfoNotify",
			"ParticipantsNotify",
			"AttendeesNotify",
			"SpeakerChangeNotify",
			"NetConditionNotify",
			"CustomMultiPicNotify",
			"InviteResultNotify",
			"InterpreterGroupNotify",
			"NetworkQualityNotify"
			],
			confToken: "Basic Y25yYzNiNmUxNGViNTU4NDgwMjc4NmZlYzAwYmZmNjI3MTQzNTU0ODUzY2NmMzZiYmNi",
			}),
		  });
                  ws.send(senddata);
                  alert("Sending subscription message..." + senddata);
               };

               ws.onmessage = function (evt) 
               { 
                  var received_msg = evt.data;
                  // alert("Data received." + received_msg);
                };                          
            }
            else
            {
               // The browser does not support WebSocket.
               alert("Your browser does not support WebSocket.");
            }
         }
      </script>
   </head>
   <body>
      <div id="meeting">
         <a href="javascript:WebSocketTest()">WebSocket connection establishment and subscription</a>
      </div>
   </body>
</html>

Ejemplo de código 2

Código para el establecimiento de conexión en un cliente de WebSocket Java y la entrega y recepción de mensajes

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.java_websocket.WebSocket;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import com.google.gson.Gson;
public class WebSocketClientDemo extends WebSocketClient{
    public WebSocketClientDemo(String url) throws URISyntaxException {
        super(new URI(url));
    }
    @Override
    public void onOpen(ServerHandshake shake) {
        System.out.println("Hand shake!");
        for(Iterator<String> it = shake.iterateHttpFields(); it.hasNext();) {
            String key = it.next();
            System.out.println(key + ":" + shake.getFieldValue(key));
        }
    }
    @Override
    public void onMessage(String paramString) {
        System.out.println("receive msg: " + paramString);
    }
    @Override
    public void onClose(int paramInt, String paramString, Boolean paramBoolean) {
        System.out.println("Channel close!");
    }
    @Override
    public void onError(Exception e) {
        System.out.println("error: " + e);
    }
    public static void main(String[] args) throws Exception{
        try {
            // Establish a WebSocket connection.
            String confID = "900964776";
            String tempToken = "&tmpToken=" + "cnr71e9a422216efb057719001f5e210b103ca232b3c8ced73b";
            String url = "wss://100.94.23.40:443/cms/open/websocket/confctl/increment/conn?confID=" + confID
                    + tempToken;
            WebSocketClientDemo client = new WebSocketClientDemo(url);
            client.connect();
            while (!client.getReadyState().equals(WebSocket.READYSTATE.OPEN)) {
                System.out.println("Not open yet");
                Thread.sleep(100);
            }
            System.out.println("WebSocket channel connected!");
            // WebSocket connection established. Send a subscription message.
            Gson gson = new Gson();
            List<SubscribeType> subscribeTypes = new ArrayList<>();
            subscribeTypes.add(SubscribeType.ConfBasicInfoNotify);
            subscribeTypes.add(SubscribeType.ConfDynamicInfoNotify);
            subscribeTypes.add(SubscribeType.ParticipantsNotify);
            subscribeTypes.add(SubscribeType.AttendeesNotify);
            subscribeTypes.add(SubscribeType.SpeakerChangeNotify);
            subscribeTypes.add(SubscribeType.NetConditionNotify);
            subscribeTypes.add(SubscribeType.InviteResultNotify);
            SubscribeReq subscribeReq = SubscribeReq.builder()
                    .subscribeType(subscribeTypes)
                    .confToken("Basic Y25yMjFlODA4NjRmZmRhMjg0ZTIwOTYwNTg4YjI5MjMzMmY3ZDc3ZGE1YmFlNjlhZGMz")
                    .build();
            SubscribeMsgFrame subscribeMsgFrame = SubscribeMsgFrame.builder()
                    .action("Subscribe")
                    .sequence("000000000000000002611382271289")
                    .data(gson.toJson(subscribeReq))
                    .build();
            String jsonStr = gson.toJson(subscribeMsgFrame);
            client.send(jsonStr);
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }
}

Connection establishment and message delivery and reception on a Java WebSocket client
SubscribeReq.java
------
import java.util.List;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
public class SubscribeReq {
    /**
     * Subscription type
     */
    List<SubscribeType> subscribeType;
    /**
     * Meeting token
     */
    String confToken;
}

SubscribeMsgFrame .java
------
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
public class SubscribeMsgFrame {
    /**
     * Message type
     */
    String action;
    /**
     * Random sequence number of a message
     */
    String sequence;
    /**
     * Message body
     */
    String data;
}