2015-10-05 84 views
1

我正在玩WebRTC「庫」,它允許用戶通過點對點連接傳輸音頻,視頻等。 爲此,我需要在我的Internet Explorer中通過WebSocket啓動連接。如何在WebSocket上創建「空間」

我選擇了heroku.com作爲我的node.js託管。

這是我的服務器上的文件,我需要將用戶添加到「房間」,但它崩潰就像你可以看到如下:

var WebSocketServer = require("ws").Server; 
var http = require("http"); 
var cool = require('cool-ascii-faces'); 
var express = require('express'); 
var app = express(); 
var port = process.env.PORT || 5000; 
app.set('port', (process.env.PORT || 5000)); 

app.use(express.static(__dirname + '/public')); 

// views is directory for all template files 
app.set('views', __dirname + '/views'); 
app.set('view engine', 'ejs'); 

app.get('/', function(request, response) { 
    response.render('pages/index') 
}); 

app.get('/cool', function(request, response) { 
    response.send(cool()); 
}); 

app.use(express.static(__dirname + "/")) 

var server = http.createServer(app) 
server.listen(port) 

console.log("http server listening on %d", port) 

var wss = new WebSocketServer({server: server}) 
console.log("websocket server created") 

wss.on("connection", function(ws) { 
    console.log("websocket connection open") 

    /////////////// 
    // I NEED HELP HERE 
    ws.on('message', function(room) { 
     console.log("I am trying to create room: " + room); 

     ws.join(room); // this line is crashing 
         // with error "There is NO function join" 


    }); 

    ws.on("close", function() { 
    console.log("websocket connection close") 
    }) 
}) 

這是我的客戶端,在這裏我把房間的名稱,我想創建:

var host = location.origin.replace(/^http/, 'ws') 
var ws = new WebSocket(host); 
waitForSocketConnection(ws); 
ws.onmessage = function (event) { 
    console.log('got ' + event); 
    console.log('got2 ' + event.data); 
}; 

function waitForSocketConnection(socket){ 
     setTimeout(
      function(){ 
       if (socket.readyState === 1) { 
        socket.send("Lukasz30M"); 
        return; 
       } else { 
        waitForSocketConnection(socket); 
       } 
      }, 5); 
    }; 

這是的WebRTC提供的示例中,我正努力遵循:

var static = require('node-static'); 
var http = require('http'); 
var file = new(static.Server)(); 
var app = http.createServer(function (req, res) { 
    file.serve(req, res); 
}).listen(2013); 

var io = require('socket.io').listen(app); 

io.sockets.on('connection', function (socket){ 

    // convenience function to log server messages on the client 
    function log(){ 
     var array = [">>> Message from server: "]; 
     for (var i = 0; i < arguments.length; i++) { 
     array.push(arguments[i]); 
     } 
     socket.emit('log', array); 
    } 

    socket.on('message', function (message) { 
     log('Got message:', message); 
    // for a real app, would be room only (not broadcast) 
     socket.broadcast.emit('message', message); 
    }); 

    socket.on('create or join', function (room) { 
     var numClients = io.sockets.clients(room).length; 

     log('Room ' + room + ' has ' + numClients + ' client(s)'); 
     log('Request to create or join room ' + room); 

     if (numClients === 0){ 
      socket.join(room); 
      socket.emit('created', room); 
     } else if (numClients === 1) { 
      io.sockets.in(room).emit('join', room); 
      socket.join(room); 
      socket.emit('joined', room); 
     } else { // max two clients 
      socket.emit('full', room); 
     } 
     socket.emit('emit(): client ' + socket.id + ' joined room ' + room); 
     socket.broadcast.emit('broadcast(): client ' + socket.id + ' joined room ' + room); 

    }); 

}); 

謝謝你的指導。我已經停止了;)

回答

-2

wrtc non permette collegamenti a pagine non sicure。相關文章


WRTC不允許鏈接到非安全頁面。你必須有一個https連接

+1

@PetterFriberg它取決於。如果Google似乎做出了合理的翻譯,就進行編輯。如果文本很多,或者翻譯很少或沒有意義,那麼評論/ downvote/flag。 – ChrisF

+1

@BhargavRao技術上是的。但正如我所說,如果自動翻譯工作(這是我用來查看答案是否實際上是垃圾郵件或粗魯),那麼我認爲在編輯時沒有任何傷害。如果你不得不做任何更多的工作,那麼標誌。使用你的判斷。如果你做國旗,但我決定做翻譯,我會標記你的國旗是有幫助的。 – ChrisF

相關問題