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);
});
});
謝謝你的指導。我已經停止了;)
@PetterFriberg它取決於。如果Google似乎做出了合理的翻譯,就進行編輯。如果文本很多,或者翻譯很少或沒有意義,那麼評論/ downvote/flag。 – ChrisF
@BhargavRao技術上是的。但正如我所說,如果自動翻譯工作(這是我用來查看答案是否實際上是垃圾郵件或粗魯),那麼我認爲在編輯時沒有任何傷害。如果你不得不做任何更多的工作,那麼標誌。使用你的判斷。如果你做國旗,但我決定做翻譯,我會標記你的國旗是有幫助的。 – ChrisF