Tag: socket.io 1.0

当出现Javascript错误时,Socket.IO会断开并阻止debugging

所以我不知道这是在socket.io 1.1.0新的东西,但每当我有一个JavaScript错误,在我的代码中的任何地方(即使它不涉及socket.io在所有),socket.io是断开连接(它调用断开连接的事件,还有一个TransportError错误的错误事件),然后…什么也没有显示在Firefox的控制台,也没有铬控制台,没有debugging信息,没有,也没有帮助我find错误… 有没有办法阻止socket.io做到这一点,或者是与websockets或什么事情?

如何从socket.io 1.2迁移到socket.io 0.9.16?

我有这个代码写在Socket.io 1.2中 var app=require('express')(); var http=require('http').Server(app); var io=require('socket.io')(http); var room; var messageEmitted;; app.get('/', function(req, res){ res.sendFile(__dirname +'/index.html'); }); app.get('/lol', function(req, res){ res.sendFile(__dirname +'/lol.html'); }); io.use(function(socket,next){ var handShakeData=socket.request; room=handShakeData._query['roomName']; messageEmitted=handShakeData._query['messageText']; next(); }); io.on('connection',function(socket){ console.log('A user connnected on : '+room); socket.join(room); io.to(room).emit('emittedMessages',messageEmitted); console.log(messageEmitted); /*socket.on('emittedMessages',function(msg){ //socket.emit(msg); // Send message to sender socket.broadcast.emit(msg); // Send message to everyone BUT […]

使用express 4和socket.io在node.js中进行会话

我想在会话中坚持一些数据。 我正在使用MongoDB作为会话存储。 我准备了简单的代码,来做到这一点。 但是,这是行不通的。 我得到这个错误: types错误:无法设置未定义的属性'myVariable' 这是我的代码: var express = require('express'); var app = require('express')(); var http = require('http') var server = require('http').Server(app); var io = require('socket.io')(server); var get_ip = require('ipware')().get_ip; var Sequelize = require('sequelize'); var url = require("url"); var crypto = require('crypto'); var cookieParser = require('cookie-parser'); var Session = require('express-session'); var MongoStore = require('connect-mongo')(Session); […]

socket.io xhr慢速连接上的错误(3G移动networking)

当我在3G移动networking(慢速互联网连接)上testing我的真实聊天应用程序时, Socket.io反复断开连接然后重新连接。 我logging了原因。 它说"xhr post error"引起"transport error"然后断开连接。 我可以知道"xhr post error"是什么意思,为什么这个错误出现在缓慢的连接中,以及如何解决这个问题? 我正在使用socket.io-client.java 0.4.2版本

如何使用Socket.io发送通知到特定的用户组/angular色?

我正在开发一个项目,我想实现一个function,在一个行动发生后,我想通知所有在线pipe理员在Web应用程序,并向他们显示一个消息,说明一个行动发生。 我有几个问题: 我如何识别哪个用户在线并具有pipe理angular色? 我正在寻找一些围绕“显示所有在线用户”列表的想法 我应该把这些pipe理员放到一个房间里,只通知那个房间吗? 我如何获得所有在线用户,并将其套接字ID与数据库中的ID /用户名相关联? 我还需要将在线状态显示在表格中,以便我知道UserOne和John目前是否在线。 我怎样才能保持在线/离线状态? 我必须保持数据库外的某个地方的状态吗? 我正在使用Laravel v5.1,NodeJS v5.0,Socket.io v1.3和Redis来玩弄通知。 有没有人有任何想法如何处理这个问题? 我并不是在寻找任何特定于代码的东西,我只是对这个想法背后的理论以及它的工作原理感到好奇。 谢谢!

socket.io升级从轮询传输到websocket吗?

我正在使用socket.io nodejs和expression框架的工作。 以下是我得到的日志输出,当我运行命令 DEBUG=* /bin/www 以下是日志输出。 engine intercepting request for path "/socket.io/" +2m engine handling "GET" http request "/socket.io/?EIO=3&transport=polling&t=1414498393419-0" +0ms engine handshaking client "WECN1dP0tobacKc8AAAB" +1ms engine:socket sending packet "open" ({"sid":"WECN1dP0tobacKc8AAAB","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}) +0ms engine:polling setting request +0ms engine:socket flushing buffer to transport +0ms engine:polling writing " 0{"sid":"WECN1dP0tobacKc8AAAB","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}" +1ms engine:socket executing batch send callback +1ms socket.io:server incoming connection […]

无法从会话存储获取会话

我已经阅读和复制粘贴了很多关于使用socket.io,express和会话存储会话的例子。 但是,每次我调用sessionStore.get() (或sessionStore.load() ),我所得到的是undefined 。 为什么? 这是我的代码(简体): var app = require('express')(), session = require('session'), MongoStore = require('connect-mongostore')(session); app.use(session({ store: new MongoStore({ 'db': 'sessions' }); })); io.use(function(socket, next) { var req = socket.request, reqCookie = cookie.parse(req.headers.cookie), sessid = reqCookie['connect.sid']; // == actual session ID sessionStore.get(sessid, function(err, session) { err // == undefined session // == undefined […]

socket.io 1.0.0 ^:使用默认的房间与自定义房间进行用户特定的通信

socket.io 1.4.5,node.js 5.x 前进:在这篇文章之前有很多阅读,努力和失败 – 所以我希望它能帮助很多未来的读者。 当我考虑如何使用房间进行用户特定的通信时(使用直接信息),使用默认房间的选项使我感到困惑, 因为直觉上,这看起来就像一个开箱即用的解决scheme,可能不应该像使用这种stream行的解决scheme一样,使用他们的用户ID或电子邮件为每个用户创build一个自定义房间。 而且,由于它是自动创build的,我认为它应该是我的唯一唯一的独立侦听器。 这导致我的尽职调查来创build这个解决scheme: io.on('connection', function(socket){ var curretUserID = null socket.on('set user',function(user){ userID = curretUserID.id }); io.to(socket.id).emit('welcome','welcome to the room!) socket.on('chat message', function(msg){//Makes Sense io.emit('chat message', msg); }); socket.on('private message', function(id, msgData){ if(userID === msg.recipientID){ socket.to(id).emit('private message', 'for your eyes only'); } }); }); 我将userID设置为在父作用域connection内部生存,以避免需要在用户和套接字之间创build映射,因为据推测这应该是使用房间解决scheme的优势。 现在我还没有看到有人这样做,所以我不知道是否完全按照默认房间的方向进行,或者由于某些原因,这样做不能扩展或在野外工作。 题: 这是默认房间的预期用途之一,还是创build一个自定义房间(如上面提到的stream行答案)仍然是当前处理用户特定通信的方式?

socket.io和node.js 400错误的请求

我有这个错误请求。 红色的请求获得错误 – 400错误的请求,它需要更多的30秒。错误后套接字工作正常,但它需要更多的时间来响应 在app.js中的代码如下 var app = express(), server = require('http').createServer(app); //io = require('socket.io').listen(server); var sockets = require('socket.io')({ 'transports': ['websocket', 'flashsocket','htmlfile','xhr-polling','jsonp-polling'] }); var io = sockets.listen(server,{ resource: '/socket.io/','sync disconnect on unload':true }); io.sockets.on('connection', function(socket){ socket.emit('server_emit'); socket.on('search', function(cattype,pagNo,lang,film,iteamcat,starname){ var query={'ProductType':cattype,'Language':lang,'ProductCategory':iteamcat,'UsedBy':starname,'UsedIn':film}, field={}, options={}; db.collection("Product").find(query,field,options).toArray(function(error, Product2){ socket.emit('result',Product2); }); }); 在客户端代码 <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect(); […]

通过PHP连接到socket.io(nodejs)

我有一个需要通过PHP连接到websocket,发送数据,并立即断开连接。 不需要等待来自套接字的响应。 我用elefant.io但更新后库不起作用。 请告诉我如何通过PHP连接到websocket?