webRTC datachannel无法在chrome62中运行

时间:2017-10-28 04:35:36

标签: node.js websocket webrtc

我是webRTC的新手。我尝试创建一个聊天应用程序,发送一条简单的短信。 但得到这个错误:

未捕获DOMException:无法执行'发送' on' RTCDataChannel':RTCDataChannel.readyState不打开'     在HTMLButtonElement。 这是我的代码。

的index.html

       

 var WebSocket = require('ws').Server;
    var Port= 8000;
    //creating a websocket server at port 9090 
    var wss = new WebSocket({port: Port}); 
    var fs=require('fs');
    var http=require('http');
    console.log("STARTED");
    var server = http.createServer(function (req, resp) {

        fs.readFile("index.html", function (error, pgResp) {
            if (error) {
                resp.write('Contents you are looking are Not Found');
            } else {
                resp.end(pgResp);
            }
        });
    });
    server.listen(3000);
    //all connected to the server users 
    var users = {};

    //when a user connects to our sever 
    wss.on('connection', function(connection) {

    console.log("User connected");

    //when server gets a message from a connected user 
    connection.on('message', function(message) {

    var data; 
    //accepting only JSON messages 
    try { 
        data = JSON.parse(message); 
    } catch (e) { 
        console.log("Invalid JSON"); 
        data = {}; 
    }

  //switching type of the user message 
  switch (data.type) { 
     //when a user tries to login 
     case "login": 
        console.log("User logged", data.name); 
        //if anyone is logged in with this username then refuse 
        if(users[data.name]) { 
           sendTo(connection, { 
              type: "login", 
              success: false 
           }); 
        } else { 
           //save user connection on the server 
           users[data.name] = connection; 
           connection.name = data.name; 

           sendTo(connection, { 
              type: "login", 
              success: true 
           }); 
        }

        break;

     case "offer": 
        //for ex. UserA wants to call UserB 
        console.log("Sending offer to: ", data.name); 

        //if UserB exists then send him offer details 
        var conn = users[data.name]; 

        if(conn != null) { 
           //setting that UserA connected with UserB 
           connection.otherName = data.name; 

           sendTo(conn, { 
              type: "offer", 
              offer: data.offer, 
              name: connection.name 
           }); 
        } 

        break;

     case "answer": 
        console.log("Sending answer to: ", data.name); 
        //for ex. UserB answers UserA 
        var conn = users[data.name]; 

        if(conn != null) { 
           connection.otherName = data.name; 
           sendTo(conn, { 
              type: "answer", 
              answer: data.answer 
           }); 
        } 

        break;

     case "candidate": 
        console.log("Sending candidate to:",data.name);
        var conn = users[data.name];  

        if(conn != null) { 
           sendTo(conn, { 
              type: "candidate", 
              candidate: data.candidate 
           }); 
        } 

        break;

     case "leave": 
        console.log("Disconnecting from", data.name); 
        var conn = users[data.name]; 
        conn.otherName = null; 

        //notify the other user so he can disconnect his peer connection 
        if(conn != null) { 
           sendTo(conn, { 
              type: "leave"
           });
        }  

        break;

     default: 
        sendTo(connection, { 
           type: "error", 
           message: "Command not found: " + data.type 
        }); 

        break;

        }  
    });

    //when user exits, for example closes a browser window 
    //this may help if we are still in "offer","answer" or "candidate" state 
    connection.on("close", function() { 

    if(connection.name) { 
        delete users[connection.name]; 

     if(connection.otherName) { 
        console.log("Disconnecting from ", connection.otherName); 
        var conn = users[connection.otherName]; 
        conn.otherName = null;

        if(conn != null) { 
           sendTo(conn, { 
              type: "leave" 
           }); 
                }  
            } 
        } 
    });

     connection.send(JSON.stringify("Hello world"));

    });

    function sendTo(connection, message) { 
    connection.send(JSON.stringify(message)); 
    }

server.js

p4 sync -L

我搜索了很多帖子并尝试删除" {optional:[{RtpDataChannels:true}]}" ,设置reliable = false。但仍面临同样的问题。它是chrome版本的问题吗?我正在使用版本62.0.3202.75(官方构建)(32位)的chrome。

0 个答案:

没有答案