收到类型错误,提示我的websocket变量未定义

马特·斯特

我的页面上正在播放视频,并且试图捕获帧并将其通过Websocket发送到服务器。

我已经成功完成了与Websocket的握手,与服务器建立了连接。

但是我的postVideoToServer()函数中出现以下错误

“ TypeError:未定义clientSocket” index.html:60:5

客户端套接字实际上是客户端用来与服务器通信的套接字。我已经使用了此变量clientSocket.onopen来成功将数据发送到服务器。

我进行了一些研究,发现这意味着值不是预期的类型。这对我来说仍然没有意义。任何解释将不胜感激。

这是我的js代码的一部分。如果需要更多,请告诉我。

  var bStop = true;
  var bOldBrowser = false;
  var video;
  var streamRecorder;
  var webcamstream;
  var clientSocket;

 function postVideoToServer(clientSocket,frame) 
 { 
      clientSocket.send(frame);
 }

 function draw(v, cc, w, h, c, clientSocket) 
 {
       cc.drawImage(v, 0, 0, w, h);  //draw video frame on canvas
       var frameData =c.toDataURL(); //turn canvas to raw png format
       postVideoToServer(clientSocket,frameData);

       if(!bStop) 
           setTimeout( function() { draw(v, cc, w, h, c, clientSocket) }, 40);   //40 * 25 = 1000 ==> draw canvas every 40 ms to have 25FPS
  }

  function startRecording(video, clientSocket)
  {       
       video = document.querySelector('video');
       var canvas = document.getElementById('canvas');
       var canvasContext = canvas.getContext('2d');
       var width = video.videoWidth;
       var height = video.videoHeight;

       canvas.width = width;
       canvas.height = height; 

       bStop = false;

      //establish connection with server
      establishSocketConnection(clientSocket,"ws://localhost:3000/web/project/Server.php");
      draw(video, canvasContext, width, height, canvas, clientSocket)            
   }


    function establishSocketConnection(clientSocket,URL)
    {
        clientSocket = new WebSocket(URL); //create socket to server
        clientSocket.onopen = function (e) 
        {
            console.log("socket open");
        }

        clientSocket.onclose = function (e) 
        {
            console.log("Socket connection closed : "+e);
        }

        clientSocket.onerror = function(error) 
        {
            alert("Failed to connect to server...Please try again later.");
        };               

   }    

当我单击下面的按钮时,将触发startRecording函数

<button onclick="startRecording(video)" class="recordbutton">Turn camera on</button>
立方的

您需要从所有函数中删除clientSocket参数,而仅使用全局变量。因为即使您打电话:

 onclick="startRecording(video, clientSocket)"

clientSocket将是未定义的(您未赋予任何值),并且无法从内部函数中对其进行更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我收到错误“未定义的变量数据”?

我收到以下错误;未定义的变量,在 codeigniter 中

错误提示未定义变量?

我收到的错误角度未定义

我在python中以OOP方式创建了一个简单的计算器。我收到一条错误消息,提示我的变量未定义

我收到以下错误:错误类型错误:无法读取未定义的属性“无效”

为什么我收到错误:类型错误:无法读取未定义的“拆分”的属性

我收到类型错误:无法读取未定义的属性“推送”。我该怎么办?

我收到一个错误-“未定义类型[hello.MessagePrinter]的合格bean”

我在这行代码中收到“类型错误:无法读取未定义的属性”

我不断收到类型错误:无法读取未定义的属性“缓存”

为什么我会收到“类型错误:无法读取未定义的属性‘发送’”?

我收到一个错误,即函数内的变量未定义

收到错误的PHP注意:未定义的变量:我的php代码中的do_not_compress

从数据库中获取时,我在CodeIgniter中收到“未定义的变量”错误

为什么我不断收到未定义的方法错误?

我收到未定义的偏移量错误

我收到错误消息“未定义indexRouter”

我不断收到“调用未定义函数..”的错误消息

为什么我仍然收到“未定义jQuery”错误

为什么我不断收到“未定义的引用”错误?

为什么我收到“isupper 未定义”错误?

为什么我收到错误:窗口未定义?

为什么我在 EJS 中收到“未定义”错误?

为什么我收到错误“未捕获的类型错误:无法读取 HTMLLIElement 处未定义的属性‘样式’。”?

为什么我会收到此“主页未定义无未定义”错误

我是PHP的新手,我不明白为什么会收到这个未定义的变量错误

为什么我在下面的代码中收到此错误“方法 getHeader(String) 未定义为类型 HttpRequest”?

为什么我在正确遵循快递的passport.js 文档后收到类型错误“未定义的用户名”?