Tag: socket.io

使用websockets手动连接到socket.io 1.x,进行容量testing

我正在使用一个nodejs express服务器,它使用socket.io与iOS客户端进行通信,并且在尝试testing有多less客户端可以同时连接和交换数据时遇到了一些麻烦。 我的目标是能够运行一个脚本连接到socket.io与数千个不同的会话,以及发送和接收数据,以了解我们的系统的规模。 目前,我们在Heroku上使用单个testing仪,但很快可能会考虑AWS上的其他选项。 我发现代码应该做我正在尝试做的早期版本的socket.io,如此,但有问题,因为它似乎v1.x有一个非常不同的握手协议。 我尝试了使用socket.io-client包,但试图连接多次只模拟使用一个会话,我需要模拟许多独立的用户。 我一直在挑选的socket.io客户端代码,但只有得到创build一个连接 – 我卡在发送数据部分。 如果任何人有任何知识或可以指出一些关于如何在客户端和socket.io服务器之间发送数据的书面资源,它会帮助我很多。 以下是我到目前为止: var needle = require('needle'), WebSocket = require('ws'), BASE_URL = 'url-to-socket-host:5002'; var connectionNo = 0; needle.get('http://' + BASE_URL + '/socket.io/?EIO=3&transport=polling&t=1416506501335-0', function (err, resp) { // parse the sid var resp = JSON.parse(resp.body.toString().substring(5, resp.body.toString().length)); // use the sid to connect using websockets var url = 'ws://' […]

如何在NodeJS的socket.io中访问Cookie会话中间件?

我决定在我的应用程序中使用socket.io,并偶然发现了一个问题。 我使用cookie-session进行快速授权: var session = require('cookie-session'); var app = express(); // … app.use(session({ keys: ['secretkey1', 'secretkey2'] })) // … app.get('/settings', function(req, res) { res.type("html"); if (!req.session.sid) { console.log("NO SID"); req.session.sid = util.randomString(); } else { console.log("sid:" + req.session.sid); } // doing stuff with req.session.sid var jadeView = { /*…*/ }; res.status(200).send(mainJade(jadeView)); }); 现在我使用socket.io。 我想出了如何访问cookie: io.sockets.on('connection', […]

SocketIO,不能发送来自客户端的数据

尝试使用SocketIO将数据从客户端浏览器发送到节点服务器时,遇到了最奇怪的问题。 从服务器发送到客户端工作得很好,但反过来我得到一个未定义的错误。 这是一个很简单的东西。 节点服务器(app.js) io.on("connection", function(socket) { socket.on("pageReady", function(data) { console.log('pageReady called'); console.log(data); return socket.emit('newline', '###SOCKET STARTED###'); }); socket.on("disconnect", function() { return console.log('disconnected'); }); }); 浏览器(client.js) var socket; socket = io.connect("http://localhost:5678"); socket.on("newline", function(data) { return $('#socketData').append('<li>' + data + '</li>'); }); socket.emit("pageReady", "test"); 超级简单吧? 没什么特别的。 当我从服务器发出时,工作正常,但是当客户端调用“pageReady”。 节点用这个响应。 /Volumes/HOME/Users/user/git/sockettest/app.js:89 console.log(data); ^ ReferenceError: data is not defined […]

无法开始使用NodeJS和SocketIO

我正在尝试使用socket.io和node.js来实现基本结构,同时使用('net')实现在node.js的主页上显示的tcpfunction来创build服务器。 由于没有太多的代码,这是我迄今为止 服务器: // Setup the server var tcpProtocol = require('net'); var serverListener = tcpProtocol.createServer(tcpHandler); var socketIO = require('socket.io').listen(serverListener); function tcpHandler(socket) { console.log("TCP Handler received a call."); socket.pipe(socket); } socketIO.sockets.on('connection', function(socket) { console.log("Connection maid."); }); socketIO.sockets.on('login', function(username, password) { console.log("login called."); console.log('username: ' + username); console.log('password: ' + password); }); serverListener.listen(5055, '127.0.0.1'); console.log("Server started on […]

在Socket.io中双重连接

我的问题很简单。 我有一个Node.js服务器与下面的代码 io.on('connection', function (socket) { console.log('connection'); }); 我的网页只包含 var socket = io(); 我在一个窗口中打开应用程序。 然后我打开另一个。 控制台显示三个连接。 如果我刷新其中一个窗口,控制台总共显示六个连接。 我再次刷新,我有10个连接。 再一次,15个连接。 这怎么可能? 我想每页加载一个连接,我怎么能实现这一点。 感谢您的关注! 注意:我不知道它是否重要,但我也使用Express,Mysql和会话

socketIO – 将套接字映射到连接

这个问题的标题是不正确的措辞,但我不知道如何说话。 如果有人想编辑它,请随意。 基本上我想弄清楚如何通过数据来自的套接字来获取播放器的特定实例,这将被用于通过我的服务器传递移动到我的小2D项目。 目前我有一个对象,通过标识号码存储所有的玩家,有些人说这是一个对象,有些人说这是一个hashmap实现,有些人说这是一个数组,无论它是什么,我正在使用它。 var connectedPlayers = {}; 当一个连接被创build时,我创build一个像这样的新玩家: var playerId = Math.floor(Math.random()*(50000-1+1)+1); var userId = Math.floor(Math.random()*(50000-1+1)+1); var player = new Player(playerId, "Guest"+userId, socket); connectedPlayers[playerId] = player; 显然,这只是为了生成随机的名称/标识号码,但是这很好,这是在socket.on('connection', function()调用上执行的。 如果您需要查看Player.js脚本,它只是一个基本的原型脚本,它向所有玩家发送有关玩家login信息,这一切都正常工作。 var playerId; var playerName; var socket; var positionX, positionY; function Player(playerId, playerName, socket) { this.playerId = playerId; this.playerName = playerName; this.socket = socket; this.positionX = […]

socket.io给出了两个响应,但只有一个是被忽视的

我正在写一个使用socket.io的程序。 在这个特定的部分,我发送一个请求并处理答案。 客户端: // …. socket.emit('opendrow', a.id); socket.on('opendrowresponse', function(msg) { console.log(msg); cell.innerHTML = msg; // …. 服务器侧手柄: // …. socket.on('opendrow',function(msg) { console.log(msg); connection2.query('SELECT * FROM testpreis WHERE id = '+msg, function(err,rows,fields) { if (err) throw err; io.to(socket.id).emit('opendrowresponse',rows) }); }); // …. 客户端代码在点击function中: var plusrow = document.getElementsByClassName('plusrow'); for (var i = 0;i<plusrow.length;i++) { plusrow[i].addEventListener('click', collapse); } […]

Nodejs – 如何杀死正在运行的SQLite查询

可能类似的问题: SQL:中断查询 有没有办法中止SQLite调用? 大家好,我实际上使用socket.io和sqlite3模块来执行SQLite数据库上的SELECT查询。 当用户点击一个OpenLayers地图,它发送一个信号给服务器(通过socket.io)来收集信息,通过执行空间请求(如交叉点,union …使用Spatialite扩展),然后最终发回数据到客户端(这些是长时间运行的查询(取决于几何graphics的数量)),以在用户点击的地图上显示一个popup窗口。 问题是:如果用户在地图上多次点击,发送很多请求到服务器,只有最后一个是重要的。 想象一下,如果一个查询需要5秒的时间来执行,并且用户在地图上每秒钟点击3次(他只想要点击的最后一个位置被使用),那么服务器将执行3个查询, 3信号通过socket.io(并打开3popup,我们只需要最后一个被打开)! 有没有任何解决scheme杀死/中止正在运行的sqlite查询与nodejs? 示例代码: socket.on('askForInfo', function (data) { sendInfo(socket, data.latitude, data.longitude); }); sendInfo定义: function sendInfo(socket, lat, lng) { // Database connection var db = new sqlite.Database('some file.sqlite', sqlite.OPEN_READONLY); // Load Spatialite extension db.loadExtension('mod_spatialite', function(err) { // Query doing spatial request db.get("VERY LONG SQL QUERY", function(err, row) { // […]

无法获得IISNode,socket.io和express一起工作

请阅读我的问题,甚至会收到一小段忠告。 我在Google Chrome中收到以下错误: GET http://localhost/socket.io/?EIO=3&transport=polling&t=1419089743449-2 404 (Not Found) 我的文件夹设置如下: 本地主机 亲 上市 socket.io/socket.io.js cssfile.css jsfile.js app.js node_模块 在我看来,客户端的握手请求是错误的,因为错误应该是localhost / pro / public / socket.io /等等等等。 我正在使用以下设置: web.config: <handlers> <add name="iisnode" path="app.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="DynamicContent"> <match url="/pro/" negate='True'/> <!–<conditions> <add input="pro" matchType="IsFile" negate="True"/> </conditions>–> <action type="Rewrite" url="app.js"/> </rule> <rule name="LogFile" patternSyntax="ECMAScript"> […]

套接字IO 1.2查询参数

我无法弄清楚如何检索服务器端的socket.io 1.2.1查询参数 这是我的客户端代码 var socket = io('http://localhost:3000/',{_query:"sid=" + $('#sid').attr('data-sid') + "&serial=" + $('#serial_tracker').text()}); 和服务器端: io.use(function(socket,next){ //find out if user is logged in var handshake = socket.request; console.log(socket.request._query); handshake.sid = handshake.query.sid; } socket.request._query是: { EIO: '3', transport: 'polling', t: '1419909065555-0' } 有谁知道如何查询参数工作在套接字io 1.2.1? 感谢您的帮助,如果您需要更多的信息,请问我。