Articles of 套接字

Node.js:SocketIO vs http请求性能

我有这种情况下,我需要将数据存储在数据库中,并发出一个事件只有特定的套接字。 这可以通过两种方式来完成: 从客户端发送一个事件,在服务器端收听这个事件,存储数据并把事件发送到我们想要的套接字。 发送一个http请求到服务器,在那里存储数据并把事件发送到套接字。 我想知道这些方法中哪一个是有效的,并且比这两个方法有更好的解决scheme。

用户收到来自nodejs的超过1个通知

这是我第一次使用nodejs,并且遇到了一些问题。 主要的问题是用户从服务器接收到超过1个信号。 计数基于页面的刷新。 以下是我的代码: var http = require('http'); var server = http.createServer().listen(1332); var io = require('socket.io').listen(server); var redis = require('redis'); var sub = redis.createClient(); //Subscribe to the Redis chat channel sub.subscribe('notification_count'); console.log("Server is running…\nClick on Ctrl+C to exit"); io.sockets.on('connection', function (socket) { var user_id = socket["handshake"]["query"]["user_id"]; console.log("user_id", user_id); socket.room = user_id; socket.join(user_id); socket.on('disconnect', function(){ socket.leave(socket.room); […]

我可以在NodeJS中使用websocket库进行本地tcp套接字连接吗?

我很难find一个健壮的套接字库在node.js做本地tcp套接字连接。 我很喜欢使用像SockJS或Socket.io这样的库来进行客户端/服务器套接字连接,但我知道那些使用与常规套接字不同的websocket。 我想知道如果我可以使用Websocket库来进行本地连接,就像使用普通套接字一样具有类似的性能,或者会包含很多不希望的networking开销? 基本上我想用套接字来实现这三件事情,我不认为本地networking模块可以开箱即用。 监视其池中每个套接字的健康状况(生存或死亡)。 将一个id附加到每个套接字,以便知道数据来自哪里 从通过套接字发送的块构build数据

Arduino串行和套接字

我尝试使用Node.js和Socket.io发送串行数据到Arduino和我的代码。 而html页面只有一个button。 它的工作节点和html端。但这不是发送串行数据。 var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io')(server); var port = process.env.PORT || 3000; server.listen(port, function () { // console.log('Server listening at port %d', port); }); // Routing app.use(express.static(__dirname + '/public')); var SerialPort = require("serialport").SerialPort var serialPort = new SerialPort("/dev/ttyACM3", { baudrate:9600 }, false); […]

socket.io-client是否适合作为XSockets.NET服务器的套接字客户端?

我在C#服务器和node.js客户端之间开发了一些套接字桥接器。 首先,我想使用传统的TCP / IP套接字,但是第二个想法是websocket在节点的asynchronous风格编程中更容易。 XSockets.NET看起来不错,干净,我会用它作为一个websocket服务器。 我知道ws广泛用于节点的基本websocket层,但是我们有socket.io或engine.io。 我不知道是否socket.io客户端是一个适当的select作为一个套接字客户端,并希望仔细检查我想念。 在这种情况下你有其他的select吗? 也许,任何抽象层是不需要的,我应该只使用ws .. 谢谢!

Socket io get是未定义的

我正在使用Sails的JS和我试图使用套接字IO图书馆。 正如Sails JS文档中所解释的: http ://sailsjs.org/#!documentation/ sockets 我用这个代码创build一个控制器: index: function(req, res) { var param = req.param('msg'); console.log("PARAM : ", param); // For display the message in terminal // Send a JSON response return res.json({ success: true, message: param }); }, 并在我的模板(我使用swig JS模板引擎): 对于包含socket io库: <script type="text/javascript" src="/socket.io/socket.io.js"></script> 在JavaScript代码中: var socket = io.connect('http://localhost:1337'); socket.get('/echo', { message: 'hi […]

Nodejs作为通过套接字的请求/响应服务器的客户端

我正在尝试用sailsjs构build一个web服务器。 为了执行它的请求,我的服务器需要连接到一个套接字来传递命令并等待响应。 对于每个命令,我都等待一个特定的响应,并且必须调用一个特定的callback函数。 目前我只打开一个套接字,并在每个请求更改“onData”套接字。 它看起来不太好,而且很丑。 另一个select是为每个命令或请求打开和closures一个套接字:我发现它甚至是最糟糕的。 有一个聪明的办法来做我所需要的? 编辑: 这里是套接字(DriverConnection.js): module.exports = { connect: function(callback){ var net = require('net'); client = net.connect({port: 13}, function() { //'connect' listener console.log('client connected'); callback(); }); }, command: function(command, callback){ client.write(command); client.on('data', function(data) { console.log("parsing data " + data.toString()); callback(JSON.parse(data.toString())); }); } }; 这是一个请求使用的例子: module.exports = { list: function(req,res) { DriverConnection.command('{}',function(data){ […]

在使用socket.io时获取express.js中的当前用户?

我正在使用快速框架,我的web应用程序的一部分使用socket.io启用实时聊天。 我需要获取当前用户的用户名,并在其中创build一个房间。 问题是我无法find一个方法来获取用户信息socket.on('连接')被调用时。 以下是我迄今为止的相关代码: var express = require('express'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var mongoose = require('mongoose'); var session = require('express-session'); var http = require('http'); var routes = require('./routes/index'); var app = express(); var server = http.createServer(app); var io = require('socket.io')(server); server.listen(4000); app.use(session({secret : 'anything', saveUninitialized: true, resave: true})); app.use(passport.initialize()); app.use(passport.session()); mongoose.connect('mongodb://localhost/my_db'); […]

Ajax /套接字:javascript数组对象的属性丢失

在Javascript中,数组[]也可以具有属性,因为它是一个对象。 但是,如果您通过ajax / socket.io将此对象发送到服务器,则数组内容保留,但其属性会丢失。 例如: var arr = ['john','peter']; arr.a = 1; console.log(arr.a); // 1 在通过ajax发送这个对象之后,服务器看到的是: console.log(arr.a); // undefined 有谁知道为什么? 我使用Node.JS服务器btw,谢谢!

为什么我使用Socket.IO连接NodeJS服务器(Sails)到另一个NodeJS服务器(Express4)失败?

我正尝试使用socket.io-client将Node.JS(使用Sails.JS编写)应用程序连接到另一个Node.JS服务器(Express4 / Socket.io)。 我的Sails Service app/services/Watcher.js看起来像 var client = require('../../node_modules/sails/node_modules/socket.io/node_modules/socket.io-client'); // callback of the form function(socket) exports.connect = function(callback) { sails.log.debug("will connect socket to", sails.config.watcher.uri, "with Socket.io-client version", client.version); var socket = client.connect(sails.config.watcher.uri); socket.on('connect', function(){ sails.log.debug("connected"); socket.on('disconnect', function(){ sails.log.debug("Disconnected"); }); socket.on('error', function(err){ sails.log.debug("Could not connect", err); }); callback(socket); }); }; 这是从config/bootstrap.js调用,如下所示: Watcher.connect(function(socket){ sails.log.debug("Connected watcher to […]