Tag: socket.io

点对点videostream使用webrt和节点js和soket io远程video不呈现

我使用这个代码https://bitbucket.org/webrtc/codelab 。 当我尝试连接远程系统时,它会在远程video框中显示我的networking摄像机video。 任何人都可以帮助如何RTCPeerConnection工作? 这是代码。 var localStream, localPeerConnection, remotePeerConnection; var localVideo = document.getElementById("localVideo"); var remoteVideo = document.getElementById("remoteVideo"); var startButton = document.getElementById("startButton"); var callButton = document.getElementById("callButton"); var hangupButton = document.getElementById("hangupButton"); startButton.disabled = false; callButton.disabled = true; hangupButton.disabled = true; startButton.onclick = start; callButton.onclick = call; hangupButton.onclick = hangup; function trace(text) { console.log((performance.now() / 1000).toFixed(3) + ": […]

在节点上的连接callback之外获得对套接字的访问权限

我有一个既是套接字客户端又是服务器的节点应用程序 它有 var frame_io = require('socket.io'); frame_io.listen(server).on('connection', function (socket) { socket.on('join', function(data) { //do stuff }); }); var io = require('socket.io-client'); var socket = io.connect('http://' + host + ':' + port, { reconnect: true }); 那么我有: socket.on('sync', function (msg) { //emit something to frame_io }); 在同步我需要现在发射到frame_io.listener内的sockets,我想知道最好的方法来做到这一点 谢谢

使用快递更改发送的HTML文件?

我正在尝试使用express,socket.io和nodejs来设置一个基本的login页面。 我最初为客户端索引页面使用: app.get('/', function (req, res) { res.send(__dirname + '/index.html'); }); 我有设置身份validation的逻辑。 我需要知道如何将用户路由到成功的login页面。 我无法理解这个中间件的工作方式,任何帮助将不胜感激。

如何在多个服务器上使用socket.io-redis?

我有两台机器上的以下代码 var server = require('http').createServer(app); io = require('socket.io')(server); var redisAdapter = require('socket.io-redis'); io.adapter(redisAdaptebr({host: config.redis.host, port: config.redis.port})); server.listen(config.port, function () { 我存储连接到这两台机器上的每个客户端的socket.id中央数据库,套接字的ID被保存,同一台服务器上的事件发送完美地工作,但是当我试图发送消息到其他服务器的套接字它不工作.. subSocket = io.sockets.connected[userSocketID]; subSocket.emit('hello',{a:'b'}) 我怎么知道redis是好的。 如何发送消息到另一台服务器上连接的套接字。

在Docker容器上清理

我希望有一个多docker容器设置运行nodejs与socket.io。 我正在使用Redis的一些共享socketId /状态。 当我杀死一个nodejs进程时,我执行了一个清除函数来删除与进程相关的sockeId /状态。 process.stdin.resume();//so the program will not close instantly function exitHandler(options, err) { console.log('exitHandler'); _.forEach(global.sockets, (socket)=> { if (global.redisClient) { global.redisClient.hdel('socketA', socket); global.redisClient.hdel('socketB', socket); global.redisClient.del(`socketC_${socket}`); } }); _.forEach(global.userIds, (userId)=> { if (global.redisClient) { global.redisClient.hdel('socketD', userId); global.redisClient.del(`socketE_${userId}`); } }); if (options.cleanup) console.log('clean'); if (err) console.log(err.stack); if (options.exit) process.exit(); } //do something when app […]

在效率和优雅方面,添加和删除事件侦听器还是使用全局/高级variables来控制发射器事件逻辑更好?

为了澄清我的问题,下面是两个例子在javascript-esque伪代码。 这里是相同的例子,但有更多的代码来上下文化他们: http : //pastebin.com/fRjW5qp6 看看我是如何使用条件来防止套接字触发重要的事件逻辑后,他们已经触发过一次(例如,我已经设置了事件监听器触发后,socket.loginBuilt为true)。 socket.on('login screen built', socketLoginScreenBuilt); function socketLoginScreenBuilt() { // See how I'm using this conditional to prevent sockets from triggering the important event logic after they've already triggered it once (since I set socket.loginBuilt to true in the logic) if (!socket.loginBuilt) { numberOfSocketsWithBuiltLoginScreens++; socket.loginBuilt = true; if (numberOfSocketsWithBuiltLoginScreens === io.sockets.sockets.length) […]

socket.io连接事件不起作用,为什么?

我是nodejs的新手,expression并尝试socket.io只是一个简单的聊天应用程序。 它非常简单的代码一切都很好,但在节点控制台上没有事件触发日志。 连接事件代码不起作用。 app.js var express = require('express'), app = require('express')(), http = require('http').Server(app), io = require('socket.io')(http), start = require('./routes/index.js'); app.use('/', start); io.on('connection', function(socket){ console.log('a user connected'); socket.on('disconnect', function(){ console.log('user disconnected'); }); }); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; }); module.exports = app; layout.jade doctype html […]

gcloud socketIO不适用于多实例

我正在与pipe理vms gcloud应用程序引擎上的socketIO + Nodejs。 我正面临一个问题,那就是当我使用手动缩放时,gcloud与套接字配合良好。 但是,当我使用dynamic扩展,套接字不工作,我认为这是行不通的,因为两个实例的端口转发问题! 这是我的app.yaml实例处理的作品。 manual_scaling: instances: 1 resources: cpu: 0.1 memory_gb: 0.1 disk_size_gb: 10 当我删除它们时,套接字不工作。 有什么build议或解决办法吗? 因为我将服务于大量的套接字请求(200万/天)。 如果没有find工作。 什么是我应该用一个实例来处理所有这些请求的规范,或者我该如何计算它们? 谢谢。

使用jwt和socket io进行authenticationstream程

我的Socket.IO应用程序要求用户在发送消息之前进行身份validation,并在没有身份validation的情况下进行连接以读取消息。 下面是一个代码示例,假设客户端将通过REST APIlogin,获取JWT并使用收到的令牌重新与套接字服务器连接: var socket = io.connect('', { query: 'token=' + token }); 我如何构build应用程序的身份validationstream程?

从Nodejs socketio数组获取所有套接字id

我正在使用socketio 0.9创build一个复杂的程序,为了存储所有的套接字ID,我使用这样的数组: var clients = {}; 我正在使用自己的序列来识别我的套接字并将它们存储在我的数组中,然后设置“套接字”键以及它的实际值。 clients[serial] = { "socket": socket.id }; 现在我需要从我的数组中获取所有套接字ID,而不需要它的序列号。 我该怎么做? 我正在尝试这个迭代,但我不知道如何获得套接字属性: for(var c in clients) { c.socket } 谢谢。