Tag: 套接字

Node.js:通过unix套接字发送GET请求

我是新的node.js。 我试图设置客户端服务器连接使用unix套接字,其中我的客户端请求将在node.js和服务器在后台运行将在去。 客户端代码: var request = require('request'); request('http://unix:/tmp/static0.sock:/volumes/list', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } else { console.log("In else part of the receiver" + response.statusCode + body) } } }) 当我尝试与写入的服务器通信时,它显示HTTP error: 400 Bad Request: malformed Host header' 同样的作品: curl -X GET –unix-socket /tmp/static0.sock http://:/volumes/list 不知道我的请求有什么问题。 我们需要发送标题吗? 我期待JSON响应。

nodejs套接字写入顺序

在编写nodejs代理服务器时,我发现在数据写入另一个socket端之前,数据可能会进入我的代理。 每次我的数据进来,我打电话给socket.write(); … 不过,由于发送的asynchronous性质,我不能确定传输的数据的顺序是否由nodejs保证与我调度写入的顺序相同。 有没有人知道在这种情况下nodejs的行为? 如果订单不能保证,那么我将不得不缓冲数据,直到我收到数据成功发送callback。

移动networking上的端口8080或80上的WebSocket连接失败

在我的Web应用程序中,我使用Node.js和Socket.io。 当我testet应用程序本地或在我的wifinetworking一切都很好,但自从我切换到移动数据我得到连接错误: WebSocket连接到'ws://url/socket.io/1/websocket/'失败:WebSocket握手期间出错:意外的响应代码:502 看来我的移动提供商阻止端口8080和80,但切换到另一个端口似乎不可能与nodejitsu。 有一些经验,如何处理移动networking,node.js和socket.io? 编辑: 作为主机,我尝试免费订阅Heroku和免费订阅Nodejitsu。 在手机上,我用移动和wifi检查了http://websocketstest.com/上的端口。 在移动端testing失败,端口80和8080。 我想也许我可以将端口更改为443,但是即使将server.listen()设置为端口443,nodejitsu似乎仍在侦听端口80。 我认为WebSockets可能可能通过另一个端口,但我不知道如何改变端口或为什么nodejitsu例如只是听80端口。

处理Node.js套接字数据

我有服务器从客户端接收数据[GPS设备]。 我有一个可读的格式呈现数据(即从客户端获得的结果)的问题。 以下是我尝试过的东西。 这样做: console.log(data) 我明白了 <Buffer d0 d7 3d 00 c4 56 7e 81> 也试过 console.log(data.toString()) 但是我得到不想要的结果:见下面: A V~ 这是我的完整代码: var net = require('net'); var fs = require('fs'); var server = net.createServer(function (socket) { console.log('Server started: Waiting for client connection …'); console.log('Client connected:port,address: '+socket.remotePort, socket.remoteAddress); socket.on('data', function (data) { var date = new Date(); […]

在socket.io v1中重复套接字? “…没有办法'客户'”

在我能写这样的东西之前: io.sockets.clients().forEach(function (socket) { socket.emit(signal,data); }); 现在,我不能和我得到的错误Object #<Namespace> has no method 'clients' 有没有另外一种方法来做到这一点? 这是套接字v1.0。 (或1.0.2我认为)。 为此,我知道我可以使用io.emit() ,但是我想遍历套接字并在定时器上对它们执行函数。 我可以重构所有的callback,并设置io.on()的计时器,但我想我需要能够使用引用(我认为JavaScript会在这种情况下使对象socket的副本,而不是引用它?) 这是一个例子 setInterval(function(){ io.sockets.clients().forEach(function (socket) { socket.emit('newMessage',someCalculations()); }); },1000);

Node.js与Socket.io – 长轮询失败,并抛出“代码”:1,“消息”:“会话ID未知”响应

我坚持为什么被移动到IIS7服务器的nod​​e.js应用程序现在失败。 我知道IIS7不支持Web套接字,但我的理解是,如果Web套接字不可用,socket.io将回退到长轮询。 所以现在,当用户试图按下通常需要套接字或长轮询的特定button时,我会得到如下所示的内容: XHR finished loading: POST "https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777964357-6&sid=QWsESi0c9ih7WMWKAAAC". GET https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777963494-5&sid=QWsESi0c9ih7WMWKAAAC 400 (Bad Request) XHR finished loading: GET "https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777963494-5&sid=QWsESi0c9ih7WMWKAAAC". OPTIONS https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777965127-7&sid=QWsESi0c9ih7WMWKAAAC XMLHttpRequest cannot load https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777965127-7&sid=QWsESi0c9ih7WMWKAAAC. Invalid HTTP status code 400 当我单击GET或XMLHttpRequest时,我可以看到响应是"code":1,"message":"Session ID unknown" ,我不明白,因为我可以看到SID。 当我点击列出的失败选项的代码时,我发现问题来自Request.prototype.create,即xhr send: xhr.send(this.data); 有没有人有任何想法可能会导致这些事情? 任何澄清将不胜感激! 非常感谢!

Socket.io使用本地主机而不是在Heroku服务器上

我目前正在尝试使用socket.io和node.js服务器与Unity脚本进行通信。 我有一切与本地主机挂钩,但由于某种原因,当我将它移植到我的Heroku服务器无法连接。 我假设这可能与URL有关? 我是socket.io新手,所以任何帮助,将不胜感激。 我的node.js服务器: var express = require('express'); var app = express(); var expressWs = require('express-ws')(app); var path = require('path'); var server = require('http').createServer(app); var io = require('socket.io')(server); io.on('connection', function(socket) { socket.on('beep', function(){ socket.emit("speed", {data: 5}); console.log('beep recieved'); }); socket.on('change-speed', function(data) { console.log('change speed recieved: ' + data); socket.emit("speed", {newSpeed: data}); }); socket.on('ios-connection', function(data) […]

Node.js Socket.io页面刷新多个连接

我有这个简单的node.js Servercode使用socket.io(1.5): var io = require('socket.io').listen(8080); io.on('connection', function(socket) { console.log(' %s sockets connected', io.engine.clientsCount); socket.on('disconnect', function() { console.log("disconnect: ", socket.id); }); }); 如果我运行这个代码,并按F5几次,在某些情况下,新的连接被创build,旧的断开之前。 过了一段时间,我认为它的心跳Timout,所有的连接将被closures。 查看结果: 2 sockets connected 3 sockets connected 4 sockets connected 5 sockets connected 6 sockets connected 7 sockets connected 8 sockets connected 9 sockets connected 10 sockets connected 11 sockets connected […]

套接字连接 – Java添加字节

我想通过套接字从我的Android设备发送一个string到我的node.js服务器。 连接已经工作,但是每当我发送string,服务器接收额外的字符。 这是我发送string“hans”到node.js服务器时收到的内容: Buffer ac ed Buffer 00 05 77 04 68 61 6e 73 作为utf8string: ?? ♣w♦hans 这是发送string的Java部分: clientSocket = new Socket("xxx.xxx.xxx.xxx",9988); ObjectOutputStream clientOut = new ObjectOutputStream(clientSocket.getOutputStream()); String sendString = "hans"; clientOut.write(sendString.getBytes()); clientOut.flush(); 那么为什么会这样呢?

Node.js – 在同一端口上使用Socket.io和Express

我需要重构这个节点的应用程序,所以socket.io和expression使用相同的端口,我可以部署它。 它目前的工作原理,但不会在Heroku上运行,除非一切都使用相同的端口。 var http = require('http'); var socket = require('socket.io'); var socketServer = http.createServer(app); var io = socket.listen(socketServer); var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var path = require('path'); app.set('view engine', 'jade'); // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })); // parse application/json app.use(bodyParser.json()); app.use(express.static(path.join(__dirname, 'public'))); var routes = require('./config/routes')(app, io); […]