Tag: socket.io

Node.JS + Socket.io + MySql:查询callback仅调用2次

我正在使用socket.io mysql模块在node.js上实现一个聊天系统: client.on('message', function (data) { if (!channel) { console.error('Cannot send message: no channel created'); return; } console.log('message received'); channel.addMessage(data.conversationID, data.text); }); 通道是实现消息传递逻辑的对象。 addMessage如下: addMessage: function (conversationID, text) { var that = this; // Inner function that inserts a message record in the database and optionally notifies // the other connected client var insertMessageIn = […]

当“连接”时,Socket.io中的服务器端套接字返回错误的名称空间

我正在使用Socket.io – 1.0.6与快递。 并尝试下面的代码。 服务器 var io = require('socket.io')(http); io.on('connect', function(socket){ console.log("server nsp->%s", socket.nsp.name); //<– printed always "server nsp->/", In my thought, it should print "/custom_nsp". }); 客户 var socket = io.connect("http://mysocket.io/custom_nsp"); socket.on('connect', function(){ console.log("client nsp->%s", socket.nsp); //<– printed correctly "client nsp->/custom_nsp" }); 我不知道为什么服务器套接字的namespce总是“/”。 我有什么不对吗?

socket.io-redis尾随字节

我正在使用socket.io-emitter将一个事件广播到一个带for循环的通道: 在文件中,我有: var io = require('socket.io-emitter')({ host: 'localhost', port: 6379 }); module.exports = { exampleFunction: function(req, res, next) { var channels = req.param('channels'), data = req.param('data'); for (var i=0; i<channels.length; i++) { io.to(channels[i]).emit('example event', data) } } } 在app.js ,我有socket.io-redis : io.adapter(socketio_redis({ host: 'localhost', port: 6379, pubClient: redis.createClient(6379, '127.0.0.1'), subClient: redis.createClient(6379, '127.0.0.1') })) 当我尝试运行exampleFunction ,在控制台中出现以下未捕获的错误: […]

在重新连接60秒后,socket.io套接字断开连接

在断开事件中,我使用socket.socket.reconnect()再次连接到套接字。 一个套接字工作正常,直到重新连接。 重新连接后,我看到套接字每60秒断开连接。 这是我的连接代码: socket = io.connect("https://website.com:8080", {'close timeout':'3', 'force new connection':true}); 以下是我在断开连接时所做的事情: socket.on('disconnect', function () { alert("disconnect"); socket.socket.reconnect(); }); 现在,如果我在客户端触发一个socket.disconnect(),套接字每隔60秒就会断开连接并重新连接。 我究竟做错了什么?

具有express框架的node.js中的socket.io ssl连接

我很困惑在node.js上build立一个安全的ssl连接,以及用socket.io创build的绑定。 这是令人头痛的,因为它不断地拒绝工作,testing浏览器的结果是: GET https://webrtc.romlex.info/socket.io/1/?t=1405428623632 404(Not Found)套接字错误 我的服务器端代码: var options = { key: fs.readFileSync(__dirname + '/public/video-phone/key.pem'), cert: fs.readFileSync(__dirname + '/public/video-phone/cert.pem') }; 其实我只是初始化快递 var app = express(); 我应该创build服务器时初始化快递,并通过选项? var app = express.createServer(options); 实际上,我正在创buildHTTPS服务器,在安全端口上进行监听 var server = require('https').createServer(options,app).listen(443); 哪种方式我应该初始化socket.io连接? 其实我正在服务器上听选项 var io = require('socket.io').listen(server,options); 我应该只在服务器上听吗? var io = require('socket.io').listen(server); 或者我应该听安全端口和选项? var io = require('socket.io').listen(443,options); 有点困惑,请帮忙! 我正在使用xhr轮询websockets io.set('transports', [ […]

Socket.io 1.0.6,nodejs CPU超过100%

我正在创build一个Web服务器来pipe理对活动数据的订阅。 这些数据通过TCPstream式传输到nodejs,然后stream式传输到使用Socket.io通过websockets订阅特定主题的客户端。 这是工作stream程。 客户端发送特定主题的订阅请求。 Nodejs应用程序将代理这个订阅到Java应用程序,然后开始通过TCP将数据推送到nodejs。 Java应用程序为每个可以侦听的新闻types启动9个不同的套接字连接,每个套接字一个类别 值得一提的是,这个数据可能是非常巨大的,因为当客户端订阅他们第一次获得历史数据(高达45MB),并且每个后续的推送包含一个小的增量。 我所遇到的问题是在初始推送nodejs应用程序中使用了超过100%的CPU。 起初,我认为这个问题是parsing正在发送给我的数据。 经过几天的debugging,我发现当注释掉socket.emit(data.topic, data) CPU会下降到1%-3%。 这使我相信,我遇到的问题是与socket.io。 我在这里误用socket.io吗? 有什么替代scheme可以推动不同的主题/渠道? 我的代码有什么问题吗? 感谢您的时间! //needed for REST subscribe services var app = require('express')() //needed for HTTP server , server = require('http').createServer(app) //WebSocket library (TODO see how to implement this) //, sockjs = require('sockjs') //backend subscriptions , subUtil = require('./subscriptions/subscriptionManager') , bodyParser = […]

在Asp.Net MVC应用程序的VirtualDirectory中使用IISNode在IIS内托pipeSocket.IO + ExpressJS应用程序

我有一个ASP.NET MVC 5应用程序和一个NodeJs(Express + Socket.IO)应用程序。 在业务场景中,我必须在MVC应用程序内运行NodeJS应用程序作为子目录。 对于。 例如, MVC: http : //foo.com NodeJS: http : //foo.com/node 我使用IISNode(最新版本)在IIS 8中托pipe了这两个应用程序。 这两个应用程序都使用websockets。 Asp.net应用程序利用SignalR和NodeJS利用Socket.IO.I已经在https://github.com/tjanczuk/iisnode上提供了相关文档。 问题是当socket.io.js在客户端加载并尝试连接到服务器时,它返回404-Not Found结果。 我已经为Node应用程序的两个应用程序和server.js附加了web.config。 我怀疑问题是与URL重写。 这里是server.js // Load required modules var http = require("http"); // http server core module var express = require("express"); // web framework external module var io = require("socket.io"); // web socket external […]

Socket.IO 1.0与Unity3d不能正常工作

我正在寻找一种方法来创build一个node.js服务器的unity3d游戏。 我熟悉Socket.io所以我想用这个。 我得到了“UnitySocket-IO”,但它不起作用,它说: Error initializing handshake with http://localhost:80/ 我在客户端(Unity)上的代码是: #pragma strict var client:SocketIOClient.Client = new SocketIOClient.Client("http://localhost:80/"); function Start () { //client.Opened += SocketOpened; client.Message += SocketMessage; //client.SocketConnectionClosed += SocketConnectionClosed; client.Error +=SocketError; client.Connect(); } function SocketMessage(sender, e) { client.Send("Pong"); } function SocketError(sender, e:SocketIOClient.ErrorEventArgs) { Debug.Log(e.Message); } 服务器上的代码(Node.JS): var io = require('socket.io')(); io.listen(80); io.on("connection", function (socket) { […]

奇怪的JavaScript在Express / Socket.io应用程序我正在处理

我试图用Brian Ford的优秀的https://github.com/btford/angular-socket-io-seed开发一个像SCADA一样的应用程序,但是我遇到了一些JavaScript代码,理解。 更糟糕的是,我甚至不知道要search什么。 我通过Googlefind的每个例子都使用了第二种语法,在这里至less不起作用。 主app.js中的代码工作,但我需要访问套接字对象,所以我可以传递给我的开发模拟模块,所以我需要改变它。 但是,当我更改套接字连接callback模块不再被加载。 我知道当routes / socket.js中的代码运行时,因为日志行MET3:来自它。 有人可以给我一个线索是什么原始的行为,所以我可以做出改变呢? 这是一个很酷的新的速记我应该使用? 不确定如果是相关的,但我正在运行socket.io 0.9.16和node.js 0.10.29。 var io = require('socket.io').listen(server); // many lines latter io.sockets.on('connection', require('./routes/socket.js')); // What is this? Working Output Express server listening on port 3000 debug – client authorized info – handshake authorized hOEv8Iv7pPO1xLdxdq1V MET1: routes/index.js index() debug – setting request GET /socket.io/1/websocket/hOEv8Iv7pPO1xLdxdq1V **MET3:** […]

socket.IO一次只能连接一个客户端(浏览器)

我有一个使用套接字IO来连接我的服务器到客户端(http网站)的问题。 在客户端,我有一个button,当按下时,发送数据到服务器。 但是,这只适用于一个客户。 如果我有两个客户端,第一个打开http网站的人获得socket IO连接,而第二个人可以打开该页面,但不能发送任何数据到服务器。 在客户端: var socket = new io.connect('ServerIP:8090'); socket.on('message', function(obj){ if ('buffer' in obj){ //ignore this } else message(obj); }); 在服务器端: var io = io.listen(server) , buffer = []; io.on('connection', function(client) { client.send({ buffer: buffer }); client.broadcast.send({ announcement: client.sessionId + ' connected' }); chatGuests.push(client); client.on('message', function(message){ var msg = { message: [client.sessionId, […]