Articles of websocket

如何播放从websocketstream接收到的PCMaudio?

问题:我正在用NodeJS制作一个应用程序,用户加载一个页面,麦克风将数据传输到NodeJS(我使用Socket.IO作为websocket部分)。 我有stream媒体工作正常,但现在我想知道如何播放我收到的audio? 下面是我从浏览器上播放的stream中收到的消息的图片,我猜这是PCMaudio,但我不是专家。 http://img.nodejscore.com/javascript/mIROL1T.png这个对象是1023长。 我在浏览器上使用的代码如下(太长,直接放在这里): https : //gist.github.com/ZeroByter/f5690fa9a7c20e2b24cccaa5a8cf3b86 问题:我从这里扯下了socket.on("mic") 。 但我不确定它是如何有效地播放它正在接收的audio数据。 这不是我第一次使用WebSocket,我非常了解WebSocket的基础知识,但是这是我第一次使用Web Audio API 。 所以我需要一些帮助。

发送到socket.io 1.X命名空间的特定空间

我已经实现了一些用户可以基于它们所在的页面连接到的socket.io命名空间。 将数据发送到特定的命名空间:房间组合似乎需要过多的样板。 这是我目前正在设置命名空间并将事件发送到给定房间中的套接字: 1)设置命名空间 let newsNs = io.of('/news'); newsNs.on(CONNECTION, socket => { socket.join('political'); }); 2)在/news命名空间和political室中发送事件给套接字: newsNs.in('political').clients((err, clients) => { clients.forEach(c => newsNs.connected[c].emit(EVENT, 'data')); }) 有没有一种更清晰,更简洁的方式发射到名称空间中的所有套接字:房间组合,而不是先迭代每个客户端,然后从someNs.connected派生套接字?

无法设置本地答案sdp:调用错误状态:STATE_INPROGRESS

我有两个客户: 1)Windows 7 PC上的Chrome(版本50.0.2661.102米) 2)Android平板电脑上的Chrome(版本50.0.2661.89) 两者都在同一个networking中(所以不需要STUN / TURN服务器)。 我使用我自己的信号服务器与Node.js(webSocket)在与Centos 6的VirtualBox VM上构build。 客户之间的video/audio通信工作正常。 现在我想将一个文件从一个客户端传输到另一个客户端。 作为我的代码的基础,我在这里使用这个例子的代码 正如这段代码所暗示的,我在创buildPeerConnection之后创build了dataChannel。 function createPeerConnection() { …. myPeerConnection = new RTCPeerConnection(iceServers, optional); myDataChannel = myPeerConnection.createDataChannel('myDataChannel'); // Set up event handlers for the ICE negotiation process. myPeerConnection.onicecandidate = handleICECandidateEvent; myPeerConnection.onaddstream = handleAddStreamEvent; myPeerConnection.onnremovestream = handleRemoveStreamEvent; myPeerConnection.oniceconnectionstatechange = handleICEConnectionStateChangeEvent; myPeerConnection.onicegatheringstatechange = handleICEGatheringStateChangeEvent; myPeerConnection.onsignalingstatechange = handleSignalingStateChangeEvent; […]

获取socket.io,express和node-http2通过HTTP / 2进行通信

我使用socket.io,node-http2编写了一个Web Socket服务器,并在Node.js中表示。 除了根据Chrome的DevTools socket.io的协商请求通过HTTP / 1.1(如下所示)之外,服务器按预期工作。 如果请求是使用HTTP / 2发送的,则“协议”列应显示h2 。 这只在Chrome中发生,其他浏览器使用正确的协议。 服务器代码(缩写): var PORT = 8667, config = require('./config'), socketioServer = require('socket.io'), app = express(), https = require('http2'), cors = require('cors'); app.use(cors(function(req, callback){ var corsOptions = { origin: false }; if (/^https:\/\/mlpvc-rr\.lc/.test(req.header('Origin'))) corsOptions.origin = true; callback(null, corsOptions); })); app.get('/', function (req, res) { res.sendStatus(403); }); […]

如何使用Web套接字和angular度CLI来设置代理

我有一个使用angular度CLI构build的简单的Web应用程序。 我希望它使用networking套接字与后端进行通信。 我已经编写了后端,并用一个简单的index.html页面进行了testing,服务器可以在套接字上发送和接收数据。 在我的angular-cli项目中,我已经设置了一个代理configuration文件来设置代理到后端。 proxy.conf.json { "/sock": { "target": "http://localhost:3000", "changeOrigin": true, "ws": true, "logLevel": "debug" } } 然后使用以下命令启动服务器。 ng serve –proxy-config proxy.conf.json 现在我有一个服务,只是试图打开一个套接字,并发送一个固定的string,我期待看到后台logging。 import { Injectable } from '@angular/core'; import * as io from 'socket.io-client'; @Injectable() export class ChatService { private socket: any; constructor() { this.socket = io({ 'path': '/sock' }); this.socket.emit('chat message', 'Hello […]

轮到socket.io和Nodejs轮stream的游戏

我用Socket.io使用Nodejs来制作一个基于回合的游戏。 每当“Pass”button被按下或转弯开始后经过5秒时,每一转都必须结束。 无论首先发生什么事都必须触发“通行证”事件。 即使不是当前玩家转身,我目前的对手也会持续循环,并且在某些情况下会提前结束。 我在使用什么逻辑方面有问题,让我的轮到正常工作。 我的客户端有这个function //Pressing "Pass" button $('#pass_turn').on('click', function(){ socket.emit('pass_turn'); $('#your_turn').hide(); $('#not_turn').show(); }); //This runs everytime the server tells the player its their turn socket.on('your_turn', function() { $('#your_turn').show(); $('#not_turn').hide(); var counter = 0; var interval = setInterval(function() { counter++; if (counter == 5) { console.log('pass_turn'); clearInterval(interval); $('#pass_turn').trigger("click"); } }, 1000); }); 这是我的服务器端代码: socket.on('pass_turn', […]

使用Php将数据从一个客户端推送到另一个客户端

我正在进行我的空气质量监测系统的大学项目,数据(比如一些整数值)必须从传感单元到网页。 我想要的是 是由这个url http://localhost/AQProject/recordupdate.php?val=2调用的脚本更新显示内容的网页。 现在我知道我可以将数据保存在数据库中,并每两秒钟运行一次基于Ajax的查询来检查更新,但是我希望更新由服务器推送。 我做了什么: 我曾尝试Server sent events 。 这是我的尝试 <?php header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); if($_SERVER["REQUEST_METHOD"]=="GET") { if(empty($_GET["val"])) die ("Empty Value from source"); else { $v = $_GET['val']; echo "data: The Pollution stub value is {$v}".PHP_EOL; ob_flush(); flush(); } }?> 和HTML有脚本 <script> if(typeof(EventSource) !== "undefined") { var source = new EventSource("recordupdate.php"); source.onmessage = function(event) […]

在水平伸缩的WebSocket服务器上负载均衡套接字?

每隔几个月,当我想通过一个涉及套接字的个人项目时,我发现自己的问题是: “如何在dynamic水平扩展的WebSocket服务器上正确加载平衡套接字? 我理解了横向扩展WebSockets背后的理论,并使用pub / sub模型将数据获取到保存特定用户的套接字连接的正确服务器。 我想我理解的方法是用最less的当前套接字连接来有效地识别服务器,我也希望路由一个新的套接字连接。 我不明白的是如何有效地将新的套接字连接路由到您select的低套接字计数的服务器。 我不认为这个答案会绑定到一个特定的服务器实现,而是可以应用到大多数服务器。 我可以很容易地看到我自己用vert.x,node.js,甚至完美实现了这个。

节点+连接+ WebSockets

我正在寻找连接的WebSockets lib /中间件 到目前为止我发现的是Socket.IO-connect,但是它使用了补丁版本的Connect。 这是一个问题,主要是由于从主分支分离连接补丁版本。 你能推荐一个好的图书馆吗?

如何从命令行访问node.js服务器

这个问题的背景: 我正在使用FFmpeg来转换video – 它工作正常。 我使用PHP中的exec()将FFmpeg请求发送到命令行。 我也使用node.js和socket.io为我的用户提供实时更新 – 这也工作正常。 我希望能够在video完成转换后发送实时提醒。 我的问题是: 如何从命令行向我的节点服务器发送请求。 我可以从命令行运行一个JS文件吗? 如果不是什么是最好的方法呢? 感谢您的build议, 克里斯。