Tag: 套接字

无法加载资源:net :: ERR_INSECURE_RESPONSE socket.io

我正在通过SSL连接到我的服务器上的一个端口…最近,我已经开始得到无法加载资源:net :: ERR_INSECURE_RESPONSE错误在铬连接到node.js + socket.io服务器。这里是我的服务器设置up代码: var fs = require('fs'); var express = require('express'); var routes = require('./routes'); var https = require('https'); var path = require('path'); var socketio = require('socket.io'); var util = require('util'); var url = require('url'); var privateKey = fs.readFileSync('ssl/keys/xxxxxxxxxxxxxxxxxxxxxxxx.key', 'utf8'); var certificate = fs.readFileSync('ssl/certs/xxxxxxxxxxxxxx.crt', 'utf8'); var credentials = {key: privateKey, cert: certificate}; var […]

io.emit vs socket.emit

我是socket.io的新手,并且遇到了一些看起来很奇怪的事情。 我实际上并不知道socket.emit和io.emit之间的socket.emit ,但我无法在任何地方find解释。 io.on('connection', function(socket){ io.emit('connected') // <<<< HERE >> socket.emit('connected'); socket.on('disconnect', function(){ io.emit('disconnect') }); socket.on('chat message', function(msg){ io.emit('chat message', msg); }); }); server.listen(3000); 这是我的服务器的东西,但是当我更改io到socket该消息只有当连接的用户连接显示。 io.emit将消息发送给所有用户。 也许它应该是这样的,也许它只是一些可怕的黑客? 让我知道你是否需要客户端的HTML。

套接字的身份validation方法

我试图通过sailsjs和passport获得身份validation工作。 这个挑战似乎是套接字连接没有会话,sailsjs嘲笑请求对象,导致它没有设置Passport中间件。 这导致nodejs抛出一个错误,说req对象没有一个叫做logIn的方法。 所以,我试着按照@xdissent在这里提供的代码片断: 通过websockets进行Sails.js + Passport.jsauthentication,这确实可以让我login而不会抛出错误。 或者呢? 事实certificate,它做了什么 ,但我不知道是什么。 因为通过不同的(套接字)请求获取req.user ,我得到一个空的对象返回。 我也看了redis。 这出来了: redis 127.0.0.1:6379> keys * 1) "waterline:broadcasting:_sequences:id" 2) "sess:aDJI0YHzh17E3AMjtKsZSijs" redis 127.0.0.1:6379> get "sess:aDJI0YHzh17E3AMjtKsZSijs" "{\"cookie\":{\"httpOnly\":true,\"path\":\"/\"}}" redis 127.0.0.1:6379> 所以有一个会话,只是没有用户存储在它。 所以长话短说,我如何获得护照和sailsjs发挥好套接字。 更新 :我想了解一些关于会话,套接字和一般的风帆的信息。 所以,如果我在一个会话中设置东西,并刷新浏览器,我希望它仍然在那里。 如果我在与套接字连接相同的页面上进行xhr调用,不应该是相同的会话吗?

在io.sockets.on()之外的socket.send

我有一个循环,连续查询数据库。 当查询返回结果时,node.js应用程序将通过socket.io v0.8向连接到节点服务器的每个客户端发送消息。 问题: io.sockets.broadcast.send('msg')在setInterval()循环的中间被调用,所以它不在io.sockets.on()的callback函数中,因此这是行不通的。 当使用io.sockets.send('msg') ,似乎没有消息发送到客户端。 Node.js代码 setInterval(function() { util.log('Checking for new jobs…'); dbCheckQueue(function(results) { if (results.length) { io.sockets.broadcast.send('hello'); } }); }, 10*1000); 但是,如果要从io.sockets.on('connection',..)调用setInterval ,则每个连接的客户端都将创build一个额外的循环! Node.js代码 io.sockets.on('connection', function(socket) { setInterval(function() { util.log('Checking for new jobs…'); dbCheckQueue(function(results) { if (results.length) { io.sockets.send('hello'); } }); }, 10*1000); }); 客户JS socket.on('hello', function() { console.log('HELLO received'); }) *如何获得一个单循环运行,但仍然能够发送消息到所有连接的客户端?

PHP的Socket服务器与node.js:networking聊天

我想要使​​用长时间的HTTP请求(Comet),ajax和websockets(取决于使用的浏览器)来编写HTTP WebChat。 用户数据库是在MySQL中。 聊天是用PHP编写的,除了也可以用javascript(node.js)写的聊天stream本身: 我不想为每个用户启动一个php进程,因为在这些php孩子之间没有好的方式发送聊天消息。 所以我想写一个自己的套接字服务器在PHP或node.js应该能够处理超过1000个连接(聊天用户)。 作为一个纯粹的Web开发人员(PHP)我不太熟悉套接字,因为我通常让Web服务器关心连接。 聊天消息不会被保存在磁盘上,也不会保存在mysql中,而是保存在RAM中作为数组或对象以获得最佳的速度。 据我所知,在单个php进程(套接字服务器)中,无法同时处理多个连接,但是您可以接受大量的套接字连接,并在循环中连续处理它们(读取和写入;传入消息 – >写入所有套接字连接)。 问题是,最有可能是一个滞后的约1000用户和MySQL操作可以放慢整个事情,这将影响所有的用户。 我的问题是:node.js可以处理性能更好的套接字服务器吗? Node.js是基于事件的,但我不确定它是否可以同时处理多个事件(不需要multithreading?),或者只有一个事件队列。 有了事件队列,它就像php:用户之后的进程用户。 我也可以在每个聊天室产生一个php进程(用户less得多),但是afaik有单线程的IRC服务器,它们也能够处理成千上万的用户。 (用C ++或其他)写的,所以也许这也可能在PHP中。 我宁愿使用PHP,而不使用Node.js,因为那样的话,这个项目将只是php而不是编程语言的混合体。 但是,如果节点可以同时处理连接,我可能会select它。

是否可以将React Native与socket.io结合使用

我正在开发一个Phonegap + React.js和Socket.io的应用程序。 然而,那么React-Native就被释放了,原生的感觉是惊人的。 我试图让socket.io客户端与React Native工作,但不幸的是没有太多的成功。 我做了一些研究,并得到了与本问题中所述完全相同的错误: https : //github.com/facebook/react-native/issues/375 关于这个问题的评论说,尝试使用获取API来获取JS模块,但我认为我做错了: var socketScript; fetch('https://cdn.socket.io/socket.io-1.2.0.js') .then(function(response) { socketScript = response._bodyText; }).done(function() { var socket = socketScript.io(); }); 这返回一个undefined不是一个函数 。 有什么办法让socket.io-client与React Native一起工作吗? 还是我看着这个错误的方式? 也许还有其他更合适的解决scheme?

在forEach循环中调用socket.disconnect实际上并不会在所有套接字上调用断开连接

我是新来的JavaScript世界。 最近我正在研究nodejs中的一个聊天应用程序。 所以我有一个叫做gracefulshutdown的方法如下。 var gracefulShutdown = function() { logger.info("Received kill signal, shutting down gracefully."); server.close(); logger.info('Disconnecting all the socket.io clients'); if (Object.keys(io.sockets.sockets).length == 0) process.exit(); var _map = io.sockets.sockets, _socket; for (var _k in _map) { if (_map.hasOwnProperty(_k)) { _socket = _map[_k]; _socket.disconnect(true); } } …code here… setTimeout(function() { logger.error("Could not close connections in time, […]

如何从NodeJs中的tcp套接字断开连接

我使用以下命令连接到NodeJs中的套接字服务器: client = net.createConnection() 那我怎么才能正常断开与服务器的连接呢? 我试过client.end()甚至client.destroy() 但是当我使用netstat检查连接状态时,它显示连接处于状态FIN_WAIT2。 我怎样才能closures和摧毁连接?

在node.js webserver中写入错误后

由于“write after end”错误,我正在为自己的node.js爱好项目苦苦挣扎。 我创build了一个node.jsnetworking服务器,其中包括使用以下代码将从HTML页面接收的命令发送到另一个进程: var netSocket = require('net').Socket(); netSocket.connect(9090); netSocket.write(messages); netSocket.end(); 这个工作,直到stream量开始增加(即消息的数量和消息的大小)。 在这一点上,我得到以下错误: Error: write after end at writeAfterEnd (_stream_writable.js:132:12) at Socket.Writable.write (_stream_writable.js:180:5) at Socket.write (net.js:615:40) at Socket.<anonymous> (/Users/mark/Documents/GitHub Repos/voice_controlled_zumo/speech_module/web_server_HTTPS.js:66:15) at Socket.emit (events.js:95:17) at Socket.onevent (/Users/mark/Documents/GitHub Repos/voice_controlled_zumo/node_modules/socket.io/lib/socket.js:327:8) at Socket.onpacket (/Users/mark/Documents/GitHub Repos/voice_controlled_zumo/node_modules/socket.io/lib/socket.js:287:12) at Client.ondecoded (/Users/mark/Documents/GitHub Repos/voice_controlled_zumo/node_modules/socket.io/lib/client.js:193:14) at Decoder.Emitter.emit (/Users/mark/Documents/GitHub Repos/voice_controlled_zumo/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/index.js:134:20) 我的猜测是,9090的服务器正在被stream量所淹没,导致错误。 作为node.js世界中的一个完整的新手,我真的很感激我如何解决这个问题的任何提示。 还要注意的是,networking服务器通过SSL提供页面(如果有任何区别的话)。 感谢您抽时间阅读! 标记

Socket.io连接恢复到轮询,从不触发'连接'处理程序

我正在尝试将socket.io添加到我现有的node.js应用程序上。 我已经在服务器端添加了socket.io库,如下所示(直接跟在http://socket.io/get-started/chat/ )之后: var express = require('express') , http = require('http') , path = require('path') , fs = require('fs'); var app = express(); var http = http.Server(app); var io = require('socket.io')(http); // Express settings […] // Express routes […] // Socket.io Communication io.on('connection', function(socket) { console.log('a user connected'); }); // Start server app.listen(config.port, function () […]