uie糖心甜酒 2019-10-24 11:22 采纳率: 50%
浏览 1662
已采纳

使用wfs.js时不能调用其内部Websocket关闭和初始化函数,如何在外部调用?

由于项目要进行H.264裸流播放,在github上找到了可用的
wfs.js,最近又遇到了一个问题,无法调用wfs.js内部Websocket初始化和关闭的函数。
之前经过提问已经解决了
调用函数内部函数的问题,答案中的链接地址是https://blog.csdn.net/weixin_43694639/article/details/88723280,
但是我用同样的写法,却不能调用websocket的关闭函数,只能调用发送数据的函数。


这是整个函数折叠起来的样子:

(function(f)){...   
})(function() {...
});

这是我要调用的函数整体:

var WebsocketLoader = function(_EventHandler){
    _inherits(WebsocketLoader, _EventHandler);
        function WebsocketLoader(wfs){...
        }
        _createClass(WebsocketLoader, [{...  //要调用的函数在省略号里
        }]);
        return WebsocketLoader;
        }(_eventHandler2.default);
exports.default = WebsocketLoader;

不能调用的函数,初始化websocket:

key: 'initSocketClient',
value: function initSocketClient() {
        this.client.binaryType = 'arraybuffer';
        this.client.onmessage = this.receiveSocketMessage.bind(this);
        // clientSocket.binaryType = 'arraybuffer';
        // clientSocket.onmessage = socketReceive;
        this.wfs.trigger(_events2.default.WEBSOCKET_MESSAGE_SENDING, { commandType: "open", channelName: this.channelName, commandValue: "NA" });  //不知道这个trigger是什么
        console.log('Websocket Open!');
        flagSP = true;
        //initSocket = initSocketClient

不能调用的函数,主动关闭websocket:

//这个函数是我后来自己加的
key: 'onWebsocketClose',
value: function onWebsocketClose(i) {
        clientSocket.send(i)
        console.log('切换页面,中断连接。' + i)
        clientSocket.close();

        socketClose = onWebsocketClose;

每次调用都会报这个错

[Vue warn]: Error in v-on handler: "TypeError: Object(...) is not a function"
found in
---> <WindowFrame> at src/components/WindowFrame.vue
       <ElHeader> at packages/header/src/main.vue
         <ElContainer> at packages/container/src/main.vue
           <Ccqg> at src/components/main.vue
             <App> at src/App.vue
               <Root> vue.esm.js:628

TypeError: "Object(...) is not a function"
    showMain WindowFrame.vue:309
    click WindowFrame.vue:268
    VueJS 3

但是这个函数可以在外部调用:

key: 'onWebsocketMessageSending',
value: function onWebsocketMessageSending(i) {
        clientSocket.send(i)
        console.log('发送视频请求:' + i)
                //this.client.send(i)
                //this.client.send(JSON.stringify({ type: 2, carNum: 8888 }))
        sendMsg = onWebsocketMessageSending

我之前写过单独的websocket,可以直接在外部调用我定义的所有方法,包括初始化和关闭。不明白为什么这里不行。

  • 写回答

3条回答 默认 最新

  • zqbnqsdsmd 2019-10-24 13:03
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 准备学习小程序搭建,谁能手把手的教我啊?
  • ¥15 关于#嵌入式硬件#的问题:树莓派第一天重装配置python和opencv后第二天打开就成这样,瞎捣鼓搞出来文件夹还是没把原来的界面调回来
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥100 AT89C52单片机C语言调试之后再回答
  • ¥15 AT89C52单片机C语言串口助手发送数据包返回值
  • ¥15 C++数组中找第二小的数字程序纠错
  • ¥50 MATLAB APP 制作出现问题
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)