Articles of 套接字

使用Node.js http.get时,套接字不会显示为closures状态

OS X 10.8.3 节点0.10.0 我正在使用“http”模块来提出FacebookgraphicsAPI的请求。 以下是我传递给“http.get”的选项: var options = {host: 'graph.facebook.com', port: 80, path: '/' + fb_id + '/picture'}; //fb_id is a Facebook user identifier 我的代码如下所示: http.get(options, function(res) { …some stuff… DONE(RESULT); //DONE is a callback function }).on('error', function(e) { …some error handling… }); 我所观察到的是,我只能做和http.globalAgent.maxSockets一样多的请求。 一旦我达到了这么多的请求,下一个调用http.get永远(显然)连接。 我已经validation,我没有收到错误的请求。 就好像响应进入后套接字没有closures。 有什么我需要做的响应处理程序,以确保套接字的一部分? 这些套接字是否因为默认的keepalive行为而closures? 我应该如何进行debugging呢?

Nodejs最大套接字池设置

所以,我试图优化我的节点应用程序,我的应用程序发出HTTP和HTTPS请求。 从LinkedIn的这篇文章快速制作节点,build议禁用套接字池以消除5个套接字的限制: // Disable socket pooling var http = require('http'); var options = {…..}; options.agent = false; var req = http.request(options) 现在来自GitHub的Mikeal(Request的开发者),他build议: require('http').globalAgent.maxSockets = Infinity 公平地说,他并不是build议无限,但是你可以在那里设置合理的价值。 现在,我的应用程序使用http和https,所以我用这个代码: var http = require('http'); http.globalAgent.maxSockets = 30; var https = require('https'); https.globalAgent.maxSockets = 30; 当我这样做,我得到这个错误: TypeError:无法设置未定义的属性'maxSockets' 最后,在查看HTTP文档时,它没有显示“globalAgent”,而是只显示了agent.maxSockets 。 所以,我想知道第一,什么是覆盖这个参数最好的语法? 其次,什么是最优价值? 它是基于我的服务器有多less内存? 它的带宽?

socket io,node js,简单示例从服务器发送图像/文件到客户端

有没有关于如何提供图像的简单明了的例子? 从服务器到客户端? 通过缓冲或只是一个直接的电话下载? (目标是有效地近乎实时地获取图像文件,以便呈现近乎直播的图像stream),并附加到html图像标签或仅附加到html页面的主体中。 不完整的示例代码:(大部分是从官方示例中获取的,或者是来自stackoverflow的代码) index.js // basic variables var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var fs = require('fs'); // required for file serving http.listen(3000, function(){ console.log('listening on *:3000'); }); // location to index.html app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); // only to test chat sample code from […]

使用Angular.js和Node.js构build实时应用程序的更好方法是什么?

我是Angular.js和Node.js的初学者,但是我意识到有两种可能的方法来实现实时应用程序。 第一个是使用Socket.io,另一个是使用带有setInterval()函数的RESTful作为客户端解决scheme。 我使用两种替代方法构build了我的应用程序,但是我不知道为什么使用一个而不是另一个更好。 我的控制器使用Angular.js(Socket.io替代): function MyController($scope, socket) { socket.on('test', function(data){ $scope.data = data; console.log($scope.data); }); } 我的控制器使用Angular.js(RESTful替代): function MyController($scope, $http) { setInterval(function() { $http.get('/test.json') .success(function(data, status, headers, config) { $scope.data = data; console.log($scope.data); }); }, 1000); } 这些做事方式之间的区别是什么? 提前致谢!

将消息发送到套接字IO中的特定客户端

我正在使用Socket IO v1.4.5,并尝试了以下3种不同的方式,但没有任何结果。 client.emit('test', 'hahahaha'); io.sockets.socket(id).emit('test',''hahaha); io.sockets.connected[id].emit('test','hahaha'); 这是我的服务器端 var socket = require( 'socket.io' ); var express = require( 'express' ); var http = require( 'http' ); var dateFormat = require('date-format'); var app = express(); var server = http.createServer( app ); var io = socket.listen( server ); io.sockets.on( 'connection', function( client ) { user[client.id]=client; //when we […]

socket.io强制断开客户端

我可能在这里做错了事,但是我无法理解这一点。 以下不起作用: 客户 $("#disconnectButton").click(function() { socket.emit("disconnect"); }); 服务器 socket.on("disconnect", function() { console.log("this never gets called"); }); 我不能手动从客户端调用断开连接事件吗? 因为以下工作: 客户 $("#disconnectButton").click(function() { socket.emit("whatever"); }); 服务器 socket.on("whatever", function() { socket.disconnect(); console.log("this gets called and disconnects the client"); });

开始了解networking套接字和http请求(和STOMP)

我最近join了一个新的项目,我负责使用networking套接字来实现stream数据。 这个想法是目前通过HTTP请求(以RESTful的方式)暴露的信息,他们希望通过networking套接字暴露。 在过去的48个小时里,我做了一些关于networking套接字和STOMP的研究,并希望得到以下几点的解释: 因此,对于客户端和服务器通过Web套接字而不是通过HTTP请求/响应进行连接,他们首先需要同意在它们之间build立一个Web套接字连接。 这是通过HTTP GET完成一个唯一的标头传递,说他们要使用一个Web套接字连接,而不是? 理论上说,有一大堆不同的数据通过一些API暴露给浏览器。 想象一下,有很多不同的HTTP请求可以做成GET,POST,DELETE。 所以要把所有这些信息的某些部分通过一个web套接字进行stream式传输,是简单地改变每个资源的当前GET请求来检查这个特殊的websocket头部是否在那里,然后做一些事情? 或者还有其他的东西需要通过networking套接字来暴露某些数据。 如果你从HTTP请求初始化套接字,我可能会误解HTTP和套接字的关系。 我认为这是我的两个主要问题,我相信这些答案将会指引我继续学习更多关于这个主题的正确方向。 我正在试图find任何好的示例代码示例,但我正试图理解这一点,足以在一周内实现。

Socket.IO客户端在返回时接收离线消息

环境: +的NodeJS Socketio 问题: 客户端A和客户端B都连接到服务器; 客户端B离线; 客户端A向客户端B发送消息(客户端B仍然离线); 客户端B再次连接到服务器; [ 问题 ]客户端B无法接收来自A的消息; 服务器代码 var clients = {}; io.sockets.on('connection', function (socket) { socket.on('online', function (data) { if (!clients[data.username]) { clients[data.username] = socket; } io.sockets.emit('message', data.user + 'online now'); }); socket.on('say', function (data) { if (data.to == 'all') { io.sockets.emit('message', data.message); } else { //to specific client clients[data.to].emit('message', […]

如何在node.js中创build一个简单的套接字?

我试图创build一个虚拟套接字用于我的一些testing var net = require("net"); var s = new net.Socket(); s.on("data", function(data) { console.log("data received:", data); }); s.write("hello!"); 得到这个错误 错误:此套接字已closures。 我也试着创build套接字 var s = new net.Socket({allowHalfOpen: true}); 我究竟做错了什么? 作为参考,完整的testing看起来像这样 it("should say hello on connect", function(done) { var socket = new net.Socket(); var client = Client.createClient({socket: socket}); socket.on("data", function(data){ assert.equal("hello", data); done(); }); client.connect(); // writes […]

是否有可能启用tcp,http和websocket都使用相同的端口?

我想在同一个端口上启用tcp , http和websocket.io通信。 我开始使用tcp服务器(部分上面////线),它的工作。 然后我运行了websocket.io (下面的////行)部分find的echo服务器的例子 ,它也工作。 但是,当我尝试将它们合并在一起,tcp不再工作。 那么,是否可以启用tcp,http和websockets都使用相同的端口? 或者我必须在另一个端口上侦听TCP连接? var net = require('net'); var http = require('http'); var wsio = require('websocket.io'); var conn = []; var server = net.createServer(function(client) {//'connection' listener var info = { remote : client.remoteAddress + ':' + client.remotePort }; var i = conn.push(info) – 1; console.log('[conn] ' + conn[i].remote); client.on('end', […]