Tag: socket.io

每次用户添加新数据时,节点都会多次发回数据

首先,我想为可怕的标题道歉, 在过去的20分钟里,我一直在想一个人,但我不知道一个简洁的方式来描述我所遇到的问题。 如果有人有更好的build议,请让我知道或编辑标题,如果你能。 背景 :为了学习NodeJS,我正在创build一个聊天服务器。 当用户点击createRoomBtn ,会创build一个事件,其中包含用户刚刚创build的房间名称,并将其发送到app.js的socket.js模块,然后将app.js附加到房间arrays(这些房间在浏览器中显示为列表),并为包括活动用户的所有用户创build广播事件。 问题 :假设有一个空的列表,并且用户添加了一个新的房间,标题为“NodeJS”,这将在屏幕上显示房间,并且一切都很好。 现在,如果我要添加另一个房间,例如,Socket.io,则浏览器呈现以下结果: Socket.io, NodeJS, NodeJS 。 如果我要添加“Javascript”,结果将是Javascript, Socket.io, NodeJS, Socket.io, Node.JS 。 基本上,浏览器一遍又一遍地呈现列表,每次列表收缩一次。 我丝毫不知道为什么会发生这种情况。 奇怪的是,如果我按刷新,浏览器正确地呈现列表的Javascript, Socket.io, NodeJS 。 到底是怎么回事? socket.js : module.exports = function(io, rooms) { var chatrooms = io.of('/roomlist').on('connection', function(socket) { //io.of creates a namespace console.log('Connection established on the server'); socket.emit('roomupdate', JSON.stringify(rooms)); socket.on('newroom', function(data) { console.log(data); […]

我怎样才能保持套接字连接从一个窗口到另一个?

我对socket.io相当陌生,但是真的很享受。 我正在使用MEAN堆栈,并开始玩socket.io。 我发现套接字连接已连接到窗口,所以刷新完成后,连接已经死亡。 有了这个说法,我试图实现一个简单的聊天function,类似于他们在socket.io入门选项卡上显示的function,相当容易。 但是,我点击这个聊天button之前,我的连接已经创build。 我想在新窗口中打开聊天窗口,并为以前连接的个人提供聊天。 这是可能的,我怎么能实现这样的function? 我从规划的angular度问,真的不要在这里发布我的代码。 我的代码非常类似于Hello World socket.io聊天应用程序,但我只想保持从一个窗口到下一个窗口的连接。

socket.io轮询返回Laravel 500 NotFoundHttpException

我试图设置一个node.js socket.io服务器,它不工作。 看来它试图首先轮询到node.js服务器,但是因为我使用Laravel来处理大部分应用程序,所以这个应用程序正在启动并返回一个Not FoundHttpException Node.js服务器代码: var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); var redis = require('ioredis'); var Redis = new redis(); Redis.subscribe('live-updates'); Redis.on('message', function(channel, message) { message = JSON.parse(message); console.log(channel, message); io.emit('foo', message.data); }); io.on('connection', function() { console.log('foo'); }); 客户代码: var socket = io.connect('http://myapp.app'); socket.on('foo', function(data) { console.log(data); }); 所有这一切都会在我的客户端触发下面的HTTP长轮询请求: […]

如何刷新页面几秒钟,直到下载完成

我想刷新一个网页,直到下载完成。下载完成后,我不想刷新页面,我可以如何实现这一目标? 任何人都可以请帮我… 我的代码: <body onload="timedRefresh(10000);"> <script type="text/javaScript"> function timedRefresh(timeoutPeriod) { setTimeout("window.location.reload(true);",timeoutPeriod); } </script> 我的app.js: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var fs = require('fs'); var request = require('request'); var progress = require('request-progress'); var targz = require('tar.gz'); var […]

closuresUrl上客户端的socket.io连接

我使用Socket.IO来绘制绘制图表的数据,在var socket = io.connect(); 我的节点js服务器的io.on('connection', function(socket){})启动一个函数,间隔每1秒它发出的数据连接的客户端。 我希望套接字closures从客户端和服务器的Url(远离应用程序)的变化应该停止发射数据。

Node.js包安装错误

我已经安装了Node.js 4.2.2 我想安装socket.io包使用npm安装socket.io 但npm安装程序只是保持运行在30分钟后在控制台中没有错误输出..

只接受socket.io中客户端发出的第一个事件并丢弃重复事件

我是一个新的node.js和socket.io。 我正在创build一个Web应用程序,其中将有数百个客户等待投标产品。 我们已经使用jquery定时器,当这个定时器为零时,所有的客户端发出拍卖closures事件到服务器。 现在我所需要的只有一个(第一个)产品closures事件被nodejs服务器(app.js)接受,其余的需要被丢弃。 //client requesting server to close the product socket.emit('time_finished', {'id':id,'name':name,'time':time}); //and my server code (receive time finished event from client) socket.on('time_finished',function(data) { //performing product closing operation here } 任何帮助将是非常可观的。

Socket.io如何检查客户端的cookie数据?

我正在构build一个待办事项列表应用程序,其中多个用户可以login到同一个列表并实时查看项目更新 – Google文档样式。 我正在使用NodeJS,Express,Socket.io进行即时更新, client-sessions NodeJS模块存储cookie以允许用户保持login状态。 我可以使用Express在页面上加载正确的项目,方法是在请求的客户端上使用Jade模板填充与Cookie关联的项目,方法是在req.session.user下创build一个包含用户详细信息的cookie。 然而,这只有当我有一个req来获取会话,如在app.get('/', function(req, res){}); 。 但是,当我想通过socket.io直播编辑时,如何确保编辑的项目链接到正确的列表? 有什么办法确定套接字客户端在服务器上有什么Cookie? 我不想简单地在浏览器上存储一个带有客户端ID的variables,因为这样会容易受到攻击,并且不会利用客户端会话的内置encryption。

无法通过socket.io将我的swift应用程序连接到node.js

我需要通过socket.io将我的iOS应用程序( swift )连接到node.js服务器。 我跟着socket.io官方教程 ,但我仍然坚持。 我试图连接到服务器,只是发出“authentication”,但我没有收到任何反馈后发出。 我的swift代码 class Socket{ var socket = SocketIOClient(socketURL: "localhost:8000", options:[.Log(true), .ForcePolling(true)]) init(){ self.addHandles() self.socket.connect() socket.connect() self.socket.emit("authentification","gaamy#test") } func addHandles(){ self.socket.on("connect") {data, ack in print("socket connected") print(data) } self.socket.on("error") {data in print("socket ERROR") print(data) } self.socket.on("reponse connection") {data in print("reponse connection") print(data) } self.socket.onAny { print("Got event: \($0.event), with items: \($0.items!)") […]

从局域网内部和外部使用socket.io

我正在使用socket.io来处理需要我将实时数据传输到浏览器的项目。 现在服务器部分是好的,但在socket.io客户端io.connect()调用,我有过去的一些问题,没有适当的解决scheme。 我已经尝试了通常的嫌疑犯,但我没有通过。 我的客户端调用如下所示: var socket = io.connect('http://10.95.xx.xx:5002'); 10.95。 ..是局域网上服务器的IP地址。 使用这个IP,我可以在局域网内的任何一台机器上访问局域网内的服务器,但这不能从局域网外部工作。 问题很可能是这个IP只用于局域网而不是公用IP。 根据大学的networking设置,公共IP是128.95 …如果我改变它到这个IP,那么它将从外部访问,而不是从内部访问。 解决这个问题的一个方法是,我尝试读取客户端的IP地址,并根据它来决定参数IP。 但是这并不健壮。 另外,我尝试使用io.connect("/") 。 在以前的情况下它已经为我工作了,但是这次没有。 此外,空的调用不起作用io.connect()没有工作。