Tag: 套接字

websockets和社交关系

我试图用node.js,express和socket.io构build一个小应用程序,它涉及处理基本的社交关系。 有多个用户,你可以请求和他们交朋友,接受他们的请求,拒绝他们,和不友好的用户 – 基本上,很像Facebook。 如果用户Alogin,并且用户B请求与他的友谊,我想立即通知用户A关于该朋友的请求。 这是websocket(和混淆)进来的地方。 每个用户将有三个不同的套接字连接,对应于三个数据集合? (1)朋友,(2)接收到的请求,(3)发送请求 当用户接受收到的请求时,需要通知其他用户他的发送的请求已被接受。 这是否需要触发其他用户的套接字上的事件? 如果由于用户不在线而导致该套接字不存在,该怎么办? 道歉,如果有困惑,但我很难理解如何概念化套接字之间的关系。

Nodejs:如何捕捉net.createServer.on(“data”,…)中的exception?

我有一个标准的套接字服务器(无HTTP)设置如下(人为): var server = net.createServer(function(c) { //'connection' listener c.on('data', function(data) { //do stuff here //some stuff can result in an exception that isn't caught anywhere downstream, //so it bubbles up. I try to catch it here. //this is the same problem as just trying to catch this: throw new Error("catch me if you can"); }); […]

Nodejs缓冲区:如何读出位标志?

我正在监听一个TCP套接字上的数据事件。 每个数据事件都为我提供了一个协议帧的缓冲区。 第一个字节作为标题,并包含一些我想访问的标志。 直到那里监听数据事件,并获得第一个字节看起来像: socket.on('data', function(buff) { console.log(buff[0]); // returns 129 }); 如果我现在想检查第一位,那么我必须将129转换为位格式,然后检出第一个数字。 129 => 1000 0001 | 正如我们所知,JavaScript不支持二进制文件。 我现在想知道如果节点缓冲区对象允许我工作位智者,如果是的话,这将是什么样子? 问候

node.js缓冲区的二进制输出是不同的

这让我很困惑。 我在node.js中有以下套接字服务器(简化): net.createServer(function (socket) { socket.on('data', function (data) { var replyData = new Buffer('78780E00C425BA53269830303000006C2D0D0A', 'hex').toString('binary'); socket.end(replyData); }); }).listen(config.port); 我期望它回复任何客户端是在缓冲区中以hex指定的二进制文件,但实际上它回复:78780E00C38425C2BA5326C298303030006C2D0D0A 这是相似的,但不完全是它应该发送。 我错过了什么?

安装Nodejitsu

我已经使用NPM成功安装了NodeJitsu。 但是,任何时候我试图运行它,我得到以下错误: TypeError: Arguments to path.join must be strings. 它发生在path.js中的第204行 有任何想法吗?

连接到Node js TCP服务器后,客户端立即断开连接

这是我第一次使用节点js。 我试图让客户端连接到服务器,并保持连接而不closures。 这些都是在虚拟机中托pipe的Ubuntu服务器版本中托pipe的。 我已经使用netstat -ant检查了服务器实际上是在监听端口5000 Websockets也可以在我的浏览器上使用。 我得到以下输出错误 Echo server dot come 192.168.1.107 node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: EPIPE, Broken pipe at Socket._writeImpl (net.js:159:14) at Socket._writeOut (net.js:450:25) at Socket.write (net.js:377:17) at Socket.ondata (stream.js:36:26) at Socket.emit (events.js:81:20) at Socket._onReadable (net.js:678:14) at IOWatcher.onReadable [as callback] (net.js:177:10) 如果我在连接事件处理程序的服务器上调用socket.end()我得到一个断开连接的客户端。 我的问题是如何build立一个稳定的连接使用这个代码,我有什么改变或者我在这里做错了? 拉我的头发 […]

Node.js中的HTTP POST不起作用

从nodejs我试图发布数据到另一个URL 127.0.0.1:3002(在文件poster.js),但是当我尝试访问它在服务器上的127.0.0.1:3002然后发布的数据不会来: 我的poster.js看起来像这样: var http = require('http'); function post() { var options = { host : '127.0.0.1', port : 3002, path : '/note/', method : 'POST' }; var req = http.request(options, function(res) { res.setEncoding('utf8'); res.on('data', function(chunk) { console.log('BODY: ' + chunk); }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); req.write("<some>xml</some>"); req.end(); […]

Node.js中的TCP套接字和文件操作

我是Node.js的新手,我有两个问题: 你可以在服务器端创build常规的TCP套接字吗? 是否可以读取/写入服务器端的文件? 就这样。 这两个对于将我的程序放到networking上都是至关重要的。

通过套接字发送base64编码图像

我们目前正在build立像社交服务一样的聊天,使用套接字在node.js上运行。 代码运行良好,但是在发送编码图像(base64)时,我们有一些奇怪的行为。 图像需要大约1/2分钟才能到达。 这是testinglocalhost为客户端和服务器 我们无法find问题,这是服务器端代码。 iPhone应用程序使用GCDAsync库,并在每次写入完成时logging日志。 (这几乎是即时的),只有服务器在发送后的一两分钟内得到它。 有问题的图像是48kb 服务器部分源 感谢您的帮助。 我似乎无法find我希望stackoverflow的问题可以!

刷新/重新加载socket.io“连接”事件不会触发

今天有socket.io的问题。 当我刷新页面.on(“connect”,{})永远不会触发。 当我从url中加载一个页面时,所有的事件都应该如此。 正如你可以看到下面我设置gameStatus破碎。 在一系列客户/服务器通信之后,游戏状态应该更新为“就绪”,并且应该在服务器上创build新的玩家。 当我重新加载页面(cmd + r)时,没有客户端事件触发。 服务器端识别新的连接“看到”新的socket.id并发出“发送空间”事件,但事件在客户端没有收到。 我试图强制新的连接,但我不知道我是否正确使用。 上周这工作正如我所料,然后今天甚至没有更新的代码,它不能让页面刷新触发这些事件。 一切正常,如果我从完整的url( http://localhost:3000在这种情况下)加载页面, index.html的: var io = io.connect('/', {'force new connection': true}); client.js var gameStatus = 'broken'; var localPlayer; window.onload = function() { console.log(gameStatus); // "broken" io.on("connect", onSocketConnected); io.on("disconnect", onSocketDisconnect); io.on("new player", onNewPlayer); io.on("send room", function(data){ console.log("send room fired"); // doesn't fire on refresh addPlayer(data); […]