Tag: 套接字

在连接上下文之外引用NodeJSnetworking套接字

我需要能够让客户端使用NodeJS套接字进行连接,但之后能够将数据发送到特定的客户端。 这里是我现在正在做的一个例子: var net = require('net'); var sockets = []; var server = net.createServer(function(c) { c.sock_id = sockets.push(c); c.on('close', function() { delete sockets[c.sock_id]; }); }); server.listen(1234, function() {}); function send_to_socket(id,message) { sockets[id].write(message); } 在我看来,这似乎不是正确的方式来处理这种情况,特别是在套接字存储在像Redis这样的环境中。 有人可以通过正确的方式来解决这个问题吗?

node.js http服务器响应套接字写入事件?

有没有办法控制每个步骤的tcp套接字写入,以了解大型图像数据传输的服务器端进度? 最糟糕的是,如何修改主节点的bin文件夹来添加这个事件? 最后,有人可以向我解释为什么node.js http tcp套接字的最大长度是1460?

基于PHP的Node JS在实时场景中的使用

基本上我是一个PHP程序员。 我想将PHP与Node js集成。 我在谷歌冲浪,并获得了一个使用PHP和节点js聊天应用程序的示例项目。 我安装到我的本地系统,它工作正常。 但是,我无法理解工作stream程,即Node j如何帮助php工作。 这是我的nodeClient.js中的代码 var socket = io.connect( 'http://localhost:8080' ); $( "#messageForm" ).submit( function() { var nameVal = $( "#nameInput" ).val(); var msg = $( "#messageInput" ).val(); socket.emit( 'message', { name: nameVal, message: msg } ); // Ajax call for saving datas $.ajax({ url: "./ajax/insertNewMessage.php", type: "POST", data: { name: nameVal, […]

使用socket.io和express js

我是Node js的新手,刚才我通过socket.io发现并expression了js,我想知道它们之间的区别或者它们之间的关系。 我有一些用于聊天应用程序的小代码 在nodeClient.js中 var socket = io.connect( 'http://localhost:8080' ); $( "#messageForm" ).submit( function() { var nameVal = $( "#nameInput" ).val(); var msg = $( "#messageInput" ).val(); alert("msg"); socket.emit( 'message', { name: nameVal, message: msg } ); // Ajax call for saving datas $.ajax({ url: "./ajax/insertNewMessage.php", type: "POST", data: { name: nameVal, message: msg }, […]

Node.js服务器在一段时间后挂起。 它套接字挂起错误?

我正在使用node.js服务器作为在线聊天function。 而客户端正在使用ajax长时间轮询它。 我注意到,它总是挂了一段时间(几个小时),所以除非我重新启动它。 挂起后,它不再响应任何客户端,所有的长轮询返回错误说节点服务器没有响应。 我有很多代码,所以我要把它们全部粘贴在这里,因为我知道可能有这么多的可能性。 但是常见的原因是什么? 我应该先检查什么问题? 通常情况下,顶部看起来像这样: Cpu(s): 1.7%us, 0.3%sy, 0.0%ni, 98.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 3844592k total, 494764k used, 3349828k free, 98224k buffers Swap: 0k total, 0k used, 0k free, 171324k cached 以下是永远服务器错误日志中的一些错误。 我注意到一个套接字挂起错误。 这可能是问题吗? events.js:72 throw er; // Unhandled 'error' event ^ Error: socket hang up at SecurePair.error (tls.js:999:23) at EncryptedStream.CryptoStream._done […]

节点JS + Socket.io应用程序在一段时间后停止接收事件

我正在一个节点的JS + socket.io应用程序。 整个应用程序工作正常, 但大约5分钟后,服务器停止接收客户端触发的事件。 🙁 当事件没有被触发时,我可以看到服务器正在成功接收心跳。 debug – got heartbeat packet debug – cleared heartbeat timeout for client 4cKMC4Iqje-7dDfibJZm debug – set heartbeat interval for client 4cKMC4Iqje-7dDfibJZm debug – emitting heartbeat for client 4cKMC4Iqje-7dDfibJZm debug – websocket writing 2:: debug – set heartbeat timeout for client 4cKMC4Iqje-7dDfibJZm 我也确定客户端正在发送消息,因为我可以看到在Chrome开发人员工具中发送的数据。 以下是正在发送的示例数据 5:::{"name":"ev_SendChatMessage","args":[{"chatMsg":"dgdfsgfs","aID":"10010001835364"}]} 另外,我在服务器机器上检查了TCP Dump的结果,它正在成功接收数据包。 节点版本是v0.10.21 socket.io版本是0.9.16 […]

通过二进制套接字发送Uint16Array表单浏览器到node.js

我想通过一个二进制套接字从浏览器发送types化数组( Uint16Array )到node.js,但是当我在节点中接收它们时,我得到了不连贯的值。 我读了大量的文档,但有一些我不明白… 这是浏览器端代码: var ws = new WebSocket('ws://127.0.0.1:8080'); ws.binaryType = "arraybuffer"; var message = new Uint16Array(3); message[0] = 123; message[1] = 456; message[2] = 789; ws.onopen = function() { ws.send(message.buffer); }; 这是服务器代码(我使用https://github.com/einaros/ws ): var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({port: 8080}); wss.on('connection', function(ws) { ws.on('message', function(buffer, flags) { var message = […]

与engine.io的Nodejs服务器/客户端套接字连接

我正试图得到一个简单的套接字连接之间build立一个engine.io套接字监听器是监听端口8888和一个javascript客户端运行在一个普通的index.html 它看起来相当直接的完成这项任务,但不知何故,我无法得到一个xhr轮询客户端正确连接。 它连接,因为客户端号码增加,但onopen事件永远不会在客户端触发。 相反,服务器端的客户端数量不断增加,客户端永远不会收到来自服务器的任何消息 – 服务器也不会从客户端收到任何消息。 这一切都与websocket运输完美,但我需要xhr-polling工作以及。 app.js var engine = require('engine.io'); var server = engine.listen(8888); server.on('connection', function (socket) { console.log(server.clientsCount); socket.send('never received by client'); // << xhr-polling client does not receive socket.on('message', function (msg) { if ('echo' == msg) socket.send(msg); }); }); 的index.html <html> <head> <script src="engine.io.js"></script> <script> var socket = eio('ws://localhost:8888/'); << starts […]

Socket.io创build的套接字ID有多独特?

每个套接字都有一个唯一的ID,可以用来查找套接字并发送给它。 这是一个string,但它有多独特? 碰撞是否可以在与群集模块一起运行的多个socket.io对象中进行,而无需同步? 如果检测到碰撞,可以更改ID吗? 我可以改变密钥的长度或生成它的algorithm,以便为每个进程(即进程ID)使用唯一的值播种ID吗?

如何在wamp上运行套接字以及为localhost使用哪个端口

我在我的项目中第一次使用node.js ,我正在WAMP上运行我的项目。 我创build了app.js和我的app.js的代码是: var http = require("http"); var url = require("url"); var qs = require("querystring"); // Create an HTTP server for *socket.io* to listen on var app = http.createServer(); var io = require("socket.io").listen(app);app.listen(8080); var authorisedIPs = [ '127.0.0.1', '192.168.0.204' ]; var clients = {}; function handler(req, res){ var remoteAddress = req.socket.remoteAddress; if(authorisedIPs.indexOf(remoteAddress) >= 0) { […]