Articles of 套接字

如何将videoblob发送到node.js服务器通过将其转换为二进制数据包?

我正在使用html5 getUserMedia来获取用户的摄像头stream,并存储到一个对象,即stream现在我想发送到服务器使用socket.io。 当我使用follwing代码时,我得到一个数组 navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; var video=document.querySelector("#outputview"); if( navigator.getUserMedia ) { navigator.getUserMedia( {video: true, audio: true},successcallback,errorcallback); function successcallback( stream ) { video.src = window.URL.createObjectURL(stream); var socket = io('http://192.168.1.102:8000'); socket.emit('data',stream);` 如何将其转换为数据stream,以便我可以发送此stream在另一个页面中查看?

AngularJS:socket.io破坏套接字

我正在使用一个节点的socket.io服务器和一个基于angular度的socket.io客户端(使用angular-socket.io ),除了在一个特定的条件下,它运作良好:我不知道如何彻底销毁sockets当套接字无法连接时,用它完成。 工作stream程是这样的:在一个给定的页面上有一个button来打开一个模式,模式的打开将sockets工厂注入到模块控制器中,并且连接到socket.io服务器。 这一切都很好,当套接字可以连接。 当模式closures时,调用$ scope.destroy并且模态控制器中的处理程序试图清理套接字。 这种模式可以closures和重新打开多次,或只有一次。 我多次创build/销毁套接字的过程可能是我的问题的一部分,这可能不是正确的范例,但是当模式被closures时,将无法与其交互,并且在页面离开之后套接字当然不会不需要存在或保持连接。 套接字创build: angular.module('app.common.newSocketFactory', ['btford.socket-io']) .factory('newSocketFactory', ['socketFactory', function(socketFactory){ return function(){ return socketFactory({ioSocket:io.connect('http://localhost:3000', {forceNew: true})}); }; }]); 注射: angular.module('…', [ 'app.common.newSocketFactory', …. ]) .controller('Controller', ['$scope', '$modalInstance', 'newSocketFactory', … function ($scope, $modalInstance, newSocketFactory, …){ … $scope.socket = newSocketFactory(); 这是我的销毁处理程序: $scope.$on('$destroy', function(){ $scope.socket.emit('unlisten'); $scope.socket.disconnect(); //have tried passing true too. }); 这可以正确地工作,当套接字能够连接在模式closures之前,服务器中的断开的事件观察到客户端断开连接。 另外,我可以closures模​​式,然后closures服务器,不会尝试重新连接。 […]

socket.io错误 – 在build立连接之前closuresweb套接字连接

我从这个页面学到了一点 – > https://github.com/Automattic/socket.io/issues/1846 我需要SSL套接字吗? 我一直在努力解决这个错误很长一段时间没有解决scheme,任何天才都可以解决这个难题? 我的应用程序代码 var express = require("express"); var app = express(); var http = require('http').Server(app); var io = require('socket.io')(http); app.use(express.static(__dirname + '/html')); http.listen(process.env.PORT || 3000, function(){ console.log('listening on *:', process.env.PORT || 3000); new shell.Shell(app, io); }); app.use(function(request, response, next){ response.header("Access-Control-Allow-Origin", "*"); response.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS"); response.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, X-Auth-Token"); request.id = […]

在Java中创build一个实时协作记事本

背景:我想创build一个记事本类似的应用程序,其中多个人可以编辑一个文件/记事本。 我已经创build了graphics界面,现在想开始研究它的多用户协作部分。 问题:如何从一个客户端的文本框中获取文本以转到另一个客户端的文本框。 我会使用套接字吗? 我将在哪里存储将与所有客户共享的文本? 我将不得不使用/做什么来创build一个function齐全的实时协作文本框。 这是一个很好的起点,我可以从中研究? 例如:Etherpad.com / Titanpad.com / Piratepad.com或Docs.Google.com(除了我想创build一个桌面应用程序,而不是一个网站) 解决在答案中出现的一些问题: 用户如何select他们想要编辑的文档:是的 用户如何创build新文档:通过在主菜单中select新文件选项 如果许多用户试图一次编辑同一个文档,会发生什么? :他们都被允许编辑文件。 用户是否需要点击“保存”button才能反映更改? 否,变更应同时反映 用户是否需要login? :是的 任何人都可以编辑任何文件,或有访问限制吗? :有限制,即。 文档的创build者可以阻止用户编辑文档..

在node.js中安装Socket.io包

1)安装的节点v0.10.13 X64 (我在Win 8中) 2)用pipe理员权限打开CMD 3)键入npm install socket.io它下载的东西,但它显示最后一个像一个build立错误的东西 。 npm http GET https://registry.npmjs.org/socket.io npm http 304 https://registry.npmjs.org/socket.io unbuild socket.io@0.9.16 npm http GET https://registry.npmjs.org/socket.io-client/0.9.16 npm http GET https://registry.npmjs.org/policyfile/0.0.4 npm http GET https://registry.npmjs.org/base64id/0.1.0 npm http GET https://registry.npmjs.org/redis/0.7.3 npm http 304 https://registry.npmjs.org/base64id/0.1.0 npm http 304 https://registry.npmjs.org/socket.io-client/0.9.16 npm http 304 https://registry.npmjs.org/policyfile/0.0.4 npm http GET https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz npm http GET https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9. […]

在Node.js中读取套接字连接响应

我正在将PHP函数转换为JS以便与Node一起使用。 PHP函数: 将一个部分形成的包作为一个arg 完成数据包 创build一个套接字 通过套接字发送数据包 从服务器读取响应代码 查找数组中的错误代码 将错误代码发回给调用者 除了读取服务器响应的位之外 ,我已经转换了大部分函数。 原始的PHP函数(注释是我对代码的理解,可能不正确) function serverInteractive($buf) { // $buf = partially formed packet $fp = fsockopen($ip, $port , $errno, $errstr, 5); $rs = ''; if (!$fp) return $this -> fsockerror; $packet = pack("s", (strlen($buf)+2)).$buf; // Finalizes the packet fwrite($fp, $packet); // Sends the packet to the server. […]

与node.js,socket.io和redis一对一的聊天应用程序

我目前在node.js和socket.io中有一个聊天应用程序(一对一)。 随着我网站上的用户越来越多,我想在我的聊天应用程序中引入redis。 这是我目前的应用程序的一个小例子: // all requires and connections io.sockets.on('connection', function(socket) { socket.on('message', function(msg) { // code to get receiverssocket io.sockets.sockets[receiverssocket].emit('message', {"source": msg.sendersusername,"msg": msg.msg}); }); }); 现在,我正在试图find如何使用redis来做这个例子,但我找不到一个与redis聊天的例子。 我只能find消息发送给所有用户的例子。 这是我看的一个例子 Simple Chat Application Using Redis, Socket.io, and Node.js 我认为这样做的一种方式是为每个用户接收消息创build通道,但这会导致数千个通道。 任何帮助我怎么能做到这一点? 编辑:添加一些代码 io.sockets.on('connection', function (client) { sub.on("message", function (channel, message) { console.log("message received on server from publish "); client.send(message); […]

如何使用Node.js net.Socket与Postgresql数据库通信就像使用terminal一样

在postgresqlterminal中,我可以键入一个命令并获得响应。 例如: #创build数据库新数据库; 创build数据库 上面我在terminalinput命令“create database newdatabase;”数据库程序响应“CREATE DATABASE” 我正在尝试做同样的事情,但使用节点net.Socket。 换句话说,我想发布命令到我在localhost:5432上运行的postgresql服务器,并通过套接字获取响应。 我的程序成功地build立了与postgresql服务器的连接,并成功地将数据刷新到内核,但是我从来没有得到响应(数据监听器永远不会被触发)。 新数据库也不会被创build。 我也快速浏览了wireshark上发生的事情。 它看起来像sockets得到设置。 我看到我的数据以明文forms发送。 postgresql服务器然后发送一个ACK FIN ACK。 我确认FIN ACK,然后postgresql服务器最后一次确认。 所以我知道postgresql服务器不会发回任何数据。 我的问题是,为什么postgresql服务器会忽略我发送的命令,为什么postgresql服务器不会向我发回任何数据,即使这些数据只是一个错误。 const net = require('net'); const BlueBird = require('bluebird'); BlueBird.coroutine(function* () { var host = "127.0.0.1"; var port = "5432"; var idle_timeout = 10000; var MySocket = new net.Socket(); MySocket.setTimeout(idle_timeout); var data = yield […]

服务器之间的websocket通信

我在Stackoverflow上阅读了很多,但经过一个星期的思考和研究,我正在运行卡住… 所以我真的要问:) 希望我解释正确的问题,如果没有,请说! 问题是simpel。 我需要2个服务器…服务器A – 没有任何东西,然后每15分钟填写一个数据库,服务器B做了从服务器A的数据的东西。 它很容易让服务器B做一个HTTP请求的数据,但我真正想要的是,服务器B从服务器A获得'套接字更新',每当它已经更新数据库数据。 问题是:服务器B不总是在同一个URL上….所以数据库服务器不能简单地做一个get / post请求,因为它不会总是知道它的url。 这就是为什么我希望,服务器B可以启动到数据库服务器的socket.io连接。保持线路对服务器A打开,以便服务器A可以响应其新的数据库数据,通过已build立的套接字连接… 。 所以基本上…是否有可能在2个服务器之间有一个共同的socket.io连接..就像一个客户端之间的服务器呢? 真的感谢!!! 更新:将其清除一点。 我有一个股票数据库..它从交易API获取所有数据,每15分钟。 这台服务器绝不能停止! 它可能,但它的烦人,导致数据将不一致… 我还有另外一个脚本,这个脚本将会一直在开发中。这个脚本对数据库服务器的数据进行了计算。 所以它会有(开发)错误等偶尔..这个脚本不应该停止'数据库股票'脚本…所以我想分开运行他们彼此。 这就是为什么我需要有2个服务器相互连接.. 我的数据库是从一个固定的URL运行..但是我的开发脚本依赖于我在哪里开发.. 也许有一个更好的解决scheme,我想达到什么..?

Socket.io中的通道

我试图通过Node.js服务socket.io( http://socket.io/ )广播一条消息到所有订户的某个子集。 更确切地说,我想使用用户可以订阅的频道,以便同时有效地将消息推送给几百人。 我不确定是否addEvent('channel_name',x)是要走的路。 我没有在文档中find任何东西。 有任何想法吗? 谢谢你