Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何制作一个;“房间”;关于WebSocket_Node.js - Fatal编程技术网

Node.js 如何制作一个;“房间”;关于WebSocket

Node.js 如何制作一个;“房间”;关于WebSocket,node.js,Node.js,我正在玩WebRTC“library”,它允许用户通过点对点连接传输音频、视频等。 为此,我需要在internet explorer中通过WebSocket启动连接 我选择了sen heroku.com作为我的node.js主机 这是我的服务器文件,我需要将用户添加到“文件室”,但它会崩溃,如下所示: var WebSocketServer = require("ws").Server; var http = require("http"); var cool = require('cool-a

我正在玩WebRTC“library”,它允许用户通过点对点连接传输音频、视频等。 为此,我需要在internet explorer中通过WebSocket启动连接

我选择了sen 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);

    });

});
var static=require('node-static');
var http=require('http');
var file=new(static.Server)();
var app=http.createServer(函数(req,res){
文件服务(req,res);
}).倾听(2013年);
var io=require('socket.io')。监听(应用程序);
io.sockets.on('connection',函数(socket){
//在客户端上记录服务器消息的便利功能
函数日志(){
var数组=[“>>>来自服务器的消息:”;
for(var i=0;i

谢谢你的指导。我完全停止了;)

wrtc非permette collegamenti是一种不干燥的pagine。devi avere联合国合议会https



WRTC不允许指向非安全页面的链接。你必须有一个https连接

@PetterFriberg,这要看情况而定。如果是这样,谷歌似乎做出了合理的翻译,那么就进行编辑。如果是大量的文本和/或翻译几乎没有意义或没有意义,那么就评论/否决/标记。@BhargavRao技术上是的。但正如我所说的,如果自动翻译有效(这是我用来查看答案是否真的是垃圾邮件或粗鲁的),那么我认为编辑没有坏处。如果你还需要做更多的工作,那就标记一下。运用你的判断力。如果你做国旗,但我决定做翻译,我会标记你的国旗作为帮助。