Articles of 套接字

Node.js中的“pipe道中未处理的stream错误”

我的应用程序:Node.js,Express,一些中间件,包括connect-assets和express.static。 所有运行在本地机器(OSX,节点0.8)在开发模式(因此express.static)。 可能很重要的细节:我最近通过HTTPS(必要时通过HTTPredirect)使整个应用程序工作,并在开发过程中使用自签证书(当然,在我的浏览器中启用)。 现在,应用程序往往是失败的机智堆栈跟踪: (1) stream.js:81 throw er; // Unhandled stream error in pipe. ^ Error: write EPIPE at errnoException (net.js:769:11) at Object.afterWrite (net.js:593:19) (2) stream.js:81 throw er; // Unhandled stream error in pipe. ^ Error: socket hang up at SecurePair.error (tls.js:948:15) at EncryptedStream.CryptoStream._done (tls.js:432:17) at EncryptedStream.CryptoStream._pull (tls.js:577:12) at SecurePair.cycle (tls.js:866:20) at EncryptedStream.CryptoStream.end (tls.js:405:13) at […]

在多个端口上运行node.js http服务器

请任何人都可以帮助我find如何获得node.js中的服务器套接字上下文,以便我知道请求来自我的服务器上的哪个端口号。 我可以读取服务器端口,如果我请求使用http标头,但我想通过networking和类似的套接字上下文告诉请求来自哪个端口号。 这里是示例代码: var http=require('http'); var url = require('url'); var ports = [7006, 7007, 7008, 7009]; var servers = []; var s; function reqHandler(req, res) { var serPort=req.headers.host.split(":"); console.log("PORT:"+serPort[1]);//here i get it using http header. } ports.forEach(function(port) { s = http.createServer(reqHandler); s.listen(port); servers.push(s); });

在Web服务器上安装节点js

我使用node.js和socket.io创build了一个简单的聊天应用程序,它在localhost:3000中工作 但是,我想把它放在我自己的网站上。 我不知道如何在web服务器上安装node.js包。 我有Mac。 你有什么想法,怎么做?

nodejs-socket.io服务器为所有用户推送相同的数据

我做的socket.io实现是错误的。 我想实现一个MySQL数据的长轮询。 对于这个演示,我为每个连接到我创build的长轮询服务器的用户提取用户数据。 每个用户都会将其唯一的user_id传递给服务器,以获取与他/她有关的数据。 (在真实的应用程序中,我想获取用户通知) 用户连接到服务器,服务器也从数据库长时间轮询。 但问题是,即使我从客户端传递唯一的ID,相同的数据被推回到客户端。 用户1传递了ID 5,用户2传递了ID 3.这两个用户都获得了与响应相同的数据(用户1的数据) 这是客户端代码 : var user_id = 5; //hardcoded for now, but in real its fetched from a form var params = { userId: user_id, }; // create a new websocket var socket = io.connect('http://localhost:8000', { query: params }); // on message received we print all the […]

在断开事件中重新连接套接字

我试图重新连接套接字之后断开连接事件被触发相同的socket.id这里是我的套接字configuration var http = require('http').Server(app); var io = require('socket.io')(http); var connect_clients = [] //here would be the list of socket.id of connected users http.listen(3000, function () { console.log('listening on *:3000'); }); 所以在断开连接事件,我想重新连接断开连接的用户与相同的socket.id,如果可能的话 socket.on('disconnect',function(){ var disconnect_id = socket.id; //i want reconnect the users here });

PHP发送消息给Node / Socket.IO服务器

我不太确定我是否以正确的方式去解决这个问题。 我想坚持使用我的Socket.IO服务器,不想在节点内创build单独的HTTP服务器。 有了这个,我可以创build一个PHP客户端,可以直接向节点Socket.IO服务器发送数据(例如:玩家从网上商店购买物品)吗? 我已经开始: <?php class communicator { public function connect($address, $port){ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if($socket){ try { socket_connect($socket, $address, $port); } catch(Exception $e){ throw new Exception($e->getMessage()); } }else{ throw new Exception('Could not create socket.'); } } ?> 套接字似乎连接到节点服务器,但我怎样才能开始直接从PHP客户端接收数据? 例如:说我使用socket_write发送消息到服务器。 我如何通过Socket.IO获取? 希望我的问题是有道理的!

套接字挂起错误与多个http.get请求

我正在使用node.js使用http.get请求和async.eachLimit方法下载大量文件。 当我增加5以上的asynchronous方法的并发性,这个“套接字挂断”错误很容易出现,我不明白为什么。 任何人都可以照亮为什么发生这种情况? 这是收到的错误 events.js:72 throw er; // Unhandled 'error' event ^ Error: socket hang up at createHangUpError (http.js:1472:15) at Socket.socketOnEnd [as onend] (http.js:1568:23) at Socket.g (events.js:180:16) at Socket.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13) 这里是用async.eachLimit方法重复调用的函数 var urlPre = "http://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?key="; var urlSidPre = "&steamid="; var urlInvSuf = "&inventory=yes"; var URL = urlPre+steam_API+urlSidPre+sid+urlInvSuf; //log.info("Downloading "+ alias […]

内部的socket.io客户端列表位置

我想知道,如果Socket.io会内部做簿记,并允许用户检索客户列表,或者如果我们将手动需要跟踪连接的客户端列表如下所示: var Server = require('socket.io'); var io = new Server(3980, {}); const clients = []; io.on('connection', function (socket) { clients.push(socket); socket.on('disconnect', function () { clients.splice(clients.indexOf(socket),1); }); }); socket.io是否存储连接列表,如下所示: io.connections 要么 io.sockets 比我期望find这个信息更麻烦,对于更新版本的socket.io。 我正在使用version => "socket.io": "^1.7.2"

如何通过socket.io对象访问express.session.MemoryStore?

我正在做一个loginfunction app.post('/teacherlogin', function(request, response) { var username = request.body.username; var password = request.body.password; con.query('SELECT t_id from login_teacher where username="'+username+'" and password="'+password+'"',function(err,results){ if(results.length > 0) { request.session.regenerate(function(){ request.session.user = username; request.session.type = 'teacher'; request.session.id = results[0].t_id; response.redirect('/teacherhome'); }); } else { response.redirect('teacherlogin'); } }); }); 现在我想发出我已经存储到会话对象的'id'和'type'。 我应该怎么做? 我读过这篇文章,但没有经验,我正面临使用它的困难。 我已经在我的代码中使用它了 var MemoryStore = express.session.MemoryStore; var sessionStore = […]

Socket.io 400(坏请求)

我在我的服务器上有这段代码 var express = require('express'); var routes = require('./routes'); var user = require('./routes/user'); var http = require('http'); var path = require('path'); var app = express(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(3000); io.sockets.on('connection', function (socket) { console.log("Socket connected"); }); 我只是想创build一个连接 和客户端上 – <script src="public/javascripts/socket.io.js"></script> <script> var socket = io.connect('http://127.0.0.1:3000'); </script> 而当我打开我的浏览器,我在控制台中得到这个错误: GET http://127.0.0.1:3000/socket.io/1/?t=1404410309733 […]