Tag: socket.io

连接到node.js socket.io服务器:客户端不连接 – 服务器报告“销毁nonsocket.io升级”

我以为socket.io将允许我实现一个websocket服务器。 我有这个非常简单的代码: // Require HTTP module (to start server) and Socket.IO var http = require('http'), io = require('socket.io'); // start at port 8888 var server = http.createServer(function(req, res) { res.writeHead(200,{'Content-Type': 'text\html'}); res.end('<h1>Welcome to the Notification Server</h1>'); }); server.listen(8888); // Create Socket.io obj/pass to server var socket = io.listen(server); socket.on('connection', function(client) { console.log('Successful Websocket connection!'); client.on('message', […]

Socket.io setInterval不准确

我使用的是带有Node.js的Socket.io,并且有一个每秒发送消息的进程。 基本上,我有一个像这样的间隔: setInterval(function(){ socket.emit('message', msg); }, 1000); 当我只使用xhr-polling时,投票是相当零星的。 有时它会相当准确地调查,大概1.0s或1.01s或999ms。 然后其他时间,就像200ms或1.5ms等 我已经删除了所有可能导致服务器延迟的逻辑,并且只是发出静态数据,它仍然是零星的。 任何想法更好的方式来处理这将是更准确的? 谢谢!

Node.js / Socket.io端口与IIS自身共享

可以使用Socket.io(在node.exe上运行) 共享端口80和(可能443)与IIS实例 用一个端口使用机器的所有核心? 当然,同时做两个:一个IIS实例和多个节点线程/进程都在同一个端口上服务。 Windows现在提供了一段时间内的进程间端口共享,因此理论上应该是可能的。 有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms730158.aspx 但是由于WCF和IIS 6.0都使用内核模式的HTTP堆栈(HTTP.sys),IIS 6.0可以与在同一台机器上运行的其他自托pipe的WCF服务共享端口80,与IIS 5.1不同。 我想我的问题的IIS部分,问题是:node.exe使用http.sys ?

在azure Ubuntu vm上设置一个支持websocket的应用程序

好的,所以我在azure色的云中创build了一个ubuntu vm,我已经成功地启动了nodejs,redis,socket.io,Express和我正在编写的游戏的所有组件。 我已经在内部和外部端口8080上设置了azure色的端点,并在我的js代码中使用app.listen(8080)。 当我浏览到http:// <app-name> .cloudapp.net:8080 /我可以很好地查看我的nodejs应用程序的结果,它显示html,css等 但是,当它试图启动一个套接字连接(使用socket.io),我只得到这个(在我的Chrome开发控制台下的websockets): HeadersPreviewResponseWebSocket Frames Request URL:ws://<app-name>.cloudapp.net:8080/socket.io/1/websocket/13510496541533398587 Request Method:GET Status Code:101 Switching Protocols Request Headersview source Connection:Upgrade Host:<app-name>.cloudapp.net:8080 Origin:http://<app-name>.cloudapp.net:8080 Sec-WebSocket-Extensions:x-webkit-deflate-frame Sec-WebSocket-Key:y5vueHE66phl70gle7KCtw== Sec-WebSocket-Version:13 Upgrade:websocket (Key3):00:00:00:00:00:00:00:00 Response Headersview source Connection:Upgrade Sec-WebSocket-Accept:dn+2lA6sMIXHLEmDS/Q4j/IIwxI= Upgrade:websocket (Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 当我尝试在客户端(浏览器)上使用socket.emit()发送任何东西时,它也会使azure上的nodejs应用程序崩溃。 在我的azure色ssh,它只是说'DEBUG:程序节点app.js退出代码为null'这不是特别有用。 所以显然不能正确连接? 我也尝试在我的nodejs侦听端口80,但是我甚至没有得到标准的网页(HTML,CSS等)。 从我在线阅读的内容来看,很有可能让套接字工作,让你不使用webangular色(我认为这个虚拟机不是)。 任何想法如何我能得到这个工作? (最好在端口80)? 编辑:开始怀疑这是否与套接字没有任何待办事项,意识到我得到了同样的交换协议消息,在我的家庭虚拟现实(在哪里工作)。 分离问题: 如何查看ubunu azure虚拟机上的nodejs程序的崩溃细节?

在login之前阻止来自NodeJS和Sockei.io的响应

在客户端获得会话cookie之前,我希望阻止NodeJS响应连接尝试,除非请求/ login url。 我已经添加了下面的侦听器在请求时closures套接字: server.listeners("request").unshift (request, response)-> if(request and request.url == "/login") # Set /login as the only entrance point to the server # A session cookie will be set here else # Authenticate based on the session cookie # if the session is invalid or doesn't exist abort the connection request.connection.destroy() 这个解决scheme是否足以做我想做的事情,或者服务器是否会尝试与客户端进行协商或在请求时间之前做出其他响应? 我在同一个端口上使用https和一个通过socket.io的websocket。

无法在代理之后使用socket.io

我无法连接到从我的公司代理后面在线托pipe的节点js服务器。 var sock = io.connect("http://example.com/"); 我的代理设置是 代理服务器=代理 代理端口= 8080 它可以绕过代理。 我如何通过代理进行请求? 谢谢。

为什么我不能在console.log()中看到socket.io的服务器代码?

我开始学习如何使用socket.io,并且在过去的几天里我一直在试图解决这个问题,但是我没有得到2件事情。 为什么在启动服务器并加载我的相应url(localhost:8088)之后,我的警报显示出来需要很长时间? 为什么我看不到socket.io的服务器代码? 例如在下一个代码块中,我从来没有在控制台中看到“我的其他事件”中的数据。 服务器(app.js): var app = require('express')() , server = require('http').createServer(app) , io = require('socket.io').listen(server); server.listen(8088); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 客户端(index.html): <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect(); socket.on('news', function […]

Socket.IO + Node.js + SSL

我想运行使用Node.js(0.5.11)和Socket.IO简单聊天。 我已经与纯粹的HTTP工作,但我需要启动SSL。 我已经在wiki中生成密钥和证书: http : //nodejs.org/api/tls.html#tls_tls_ssl 我使用的代码: app.js: var tls = require('tls'); var fs = require('fs'); var options = { key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem'), }; var server = tls.createServer(options, function(cleartextStream) { console.log('server connected', cleartextStream.authorized ? 'authorized' : 'unauthorized'); cleartextStream.write("welcome!\n"); cleartextStream.setEncoding('utf8'); cleartextStream.pipe(cleartextStream); }); server.listen(8000, function() { console.log('server bound'); }); 服务器启动良好。 问题开始时,我想引用index.php上的socket.io: <script src="https://localhost:8000/socket.io/socket.io.js"></script> 萤火虫给我状态中止,我不能与“io”对象,因为它没有加载。 我也尝试“http://本地…”在src属性,但没有任何改变。 我究竟做错了什么? […]

多个socket.io客户端连接 – 强制新的连接

我想从客户端连接到两个不同的节点服务器,它们实际上运行在相同的本地IP地址但不同的端口上。 问题是,第一个io.connect()成功,但第二个失败。 我读过,为了得到它的工作,第二个io.connect调用应该包括force new connection属性设置为true。 我尝试过,但没有太多的成功…在这里,你是我的代码相当简化的版本: dataSocket = io.connect('https://' + window.document.location.host); … socketOut = io.connect(data.url, {'force new connection': true}); 基本上,第一个连接在https://192.168.1.129 (443端口)上打开一个套接字,第二个连接在https://192.168.1.129上打开一个套接字,最后一个失败。 这两个服务器正在运行,并在这些调用(显然)接受连接。 好奇的是,如果我用localhostreplace私有本地地址,它的工作。 我明确地想念一些东西… 有什么build议么?

Socket.io通过XHR轮询不通过Cookie

我试图将Express(3.x)与NowJS(主要是围绕着Socket.io的封装)结合起来创build一个实时应用程序,首先需要你login。我确实是Node的新手,但是我有一个很好的处理每个包如何独立工作。 但是,从NowJS访问快速会话信息是给我适合的。 这个问题似乎是因为我不得不使用XHR-Polling(使用Heroku作为主机平台),所以我无法轻松访问Socket.io身份validation方法中的cookie信息。 在authFunction下面的代码中,“data.headers.cookie”是未定义的。 以一种迂回的方式(在Now.js代码中),这会在nowjs.on(“connect”,…)callback中留下“this.user.cookie”为空(但不是未定义的)。 这反过来让我无法抓住会议信息。 从阅读来看,似乎cookie只有在使用websocket时才可用。 没有cookie,我不知道哪个用户正在调用服务器,除了为它们生成的随机标识符。 任何人都可以build议如何处理这个? 在build立与Now.js服务器的连接后,是否需要手动从客户端发送cookie? var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.engine('html', consolidate.swig); app.set('view engine', 'html'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.session({ secret: "secrethere" , store: sessionStore})); app.use(express.static(path.join(__dirname, 'public'))); app.use(app.router); }); app.configure('development', function(){ app.use(express.errorHandler({dumpExceptions: true, showStack: true})); }); //Map the routes var routes […]