首页 > 解决方案 > 尝试从 Twilio 视频房间断开连接时出现“未捕获的 ReferenceError:房间未定义”

问题描述

我正在使用 Twilio Video Javascript API 从浏览器流式传输和录制视频内容。该应用程序是内置的Nodejs/Express,我正在Twilio APICDN页面中的链接加载。到目前为止,我可以使用以下代码成功实例化一个房间并在服务器上录制视频:

    function createAndConnectToRoom(roomName) {
        Twilio.Video.connect(Token, { name: roomName }).then(room => {
            console.log(`Successfully joined a Room: ${room}`);
            room.on('participantConnected', participant => {
                console.log(`A remote Participant connected: ${participant}`);
            });
        }, error => {
            console.error(`Unable to connect to Room: ${error.message}`);
        });

        displayLocalVideo();
    }

我的问题是我无法断开与服务器的连接。理想情况下,我想要一个大按钮来断开用户连接并终止房间。在 Twilio 文档中,他们建议使用以下代码(外部函数是我自己的,内部代码是 from Twilio)。但是,当我使用事件Uncaught ReferenceError: the room is not defined触发此功能时,我会在 Chrome 控制台中收到。onclick

    function disconnectFromRoom() {
        room.on('disconnected', room => {
            // Detach the local media elements
            room.localParticipant.tracks.forEach(publication => {
                const attachedElements = publication.track.detach();
                attachedElements.forEach(element => element.remove());
            });
        });

        // To disconnect from a Room
        room.disconnect();

    }

我还尝试在创建全局变量时将“房间”保存到全局变量中,然后将该变量传递给断开连接函数。但即便如此,我也无法调用room.on.

我似乎误解了如何使用 API 终止房间的基本知识。

标签: javascriptnode.jsexpresstwiliotwilio-api

解决方案


将你的 room.on('disconnect) 代码移动到你的 createAndConnectToRoom 函数中。它不需要在您的断开功能中!

在您的 disconnectFromRoom 函数中:

    function disconnectFromRoom() {
       if (rm) {
          rm.disconnect();
       }
    }

还想补充

    room.on('disconnected', room => {

有命名空间冲突


推荐阅读