Articles of 套接字

我怎样才能发送socket.io消息MongoDB

我有一个类似于socket.io首页的聊天应用程序。 我想用monogdb / mongoose保存这些消息,以便在刷新/服务器重新启动之后它们总是在那里(只是为了学习如何工作)。 所以例如在我的mongoose文件中,我有这样的: var mongoose = require( 'mongoose' ); var Schema = mongoose.Schema; var Mes = new Schema({ content : String }); mongoose.model( 'Mes', Mes ); mongoose.connect( 'mongodb://localhost/socketio' ); 我想保存所有的消息。 var db = require('./db.js'); … io.on('connection', function(socket){ socket.emit('uconnected') socket.broadcast.emit('connected') socket.on('disconnect', function(){ io.emit('disconnect') }); socket.on('chat message', function(msg){ io.emit('chat message', msg); });}); 所以我不知道如何做到这一点,我有一些想法,但他们没有工作。 我知道你必须在某处添加这个。 new […]

节点4.1.0 TLSSocket问题

在具有TLSSocket和tls.connect的节点中出现奇怪的行为。 var port = 7000; var host = '94.125.182.252'; //freenode var tls = require('tls'); var net = require('net'); var socket = new net.Socket(); var secure; secure = new tls.TLSSocket( socket, { isServer: false, rejectUnauthorized: false }); // edit (left out of original post, but present in my test code, whoops) secure.connect( { port: port, host: […]

是一个TCP套接字安全或应该我总是检查用户

我有一个C ++应用程序,通过TCP套接字连接到nodeJS服务器。 在套接字“握手”中,客户端使用服务器已知的UUID进行身份validation,然后服务器将该帐户关联到此识别的UUID 一旦TCP套接字打开,应用程序发送请求,服务器通过相同的套接字回答。 是否有必要为每个请求添encryption码以确保请求来自客户端? 或者是一个sockets应该到位并保持原位? 所以我应该确定客户是客户: 只有打开sockets? 每次提出请求?

Socket.IO – 如何为不同的端点/房间获取不同的活动用户列表?

我正在写一个简单的socket.io(v1.3.6)的聊天程序。 当用户用他们的用户名login时,他们可以在仪表板上看到几个聊天室,并通过不同的terminal字体input每个聊天室, http://localhost:8080/api/chats/room01 。 用户可以在任何一个房间聊天。 对于每个房间,我想创build一个活跃的用户列表。 “主动”意味着这个用户现在连接到套接字(在这个房间聊天)。 我看到很多问题已经发布,但仍然被他们几个孤立的单词混淆。 在我目前的server.js中,我添加了这个代码: var io = require('socket.io')(http); io.on('connection', function(socket){ console.log('a user connected: ' + socket.id); socket.on('disconnect', function(){ console.log(socket.id + ' has disconnected from the chat.'); }); }); 总结起来,有两个问题: 如何区分不同房间/端点的套接字连接? 我怎样才能得到活动的用户名,而不是socket.id ,这可能是不同的同一个用户? 非常感谢。 更新 : 我的服务器端代码: io.of('/rooms/room01').on('connection', function(socket) { console.log("socket connected: ", socket.id); //….some more codes }); 我的客户端代码: app.factory('socketio', ['$rootScope', […]

Socket.io,不能从客户端发出自定义事件

我有一个非常简单的应用程序,与客户端JS应该从表单中获取数据,并通过data事件发送到服务器。 这里是服务器端的代码: var express = require('express'), app = express(), http = require('http').Server(app), io = require('socket.io')(http); io.sockets.on('connection', function(socket) { console.log('Client connected'); }); io.sockets.on('data', function(data) { console.log(data); }); http.listen(8080); 这里是客户端代码: var socket = io.connect('http://localhost:8080'); $('#send').click(function(e) { e.preventDefault(); socket.emit('data', { transportation: $('#transportation').val(), distance: $('#distance').val() }); }); 在服务器端控制台中,我看到connection事件被正确接收,但不是data …

使用redisbuild立与socket.io和NodeJs的实时聊天

我想为我的项目构build一个实时聊天系统,但实际上我有一些Redis问题,因为我希望我的数据尽可能地保存。 我的问题: 我想使用Socket Io在一个封闭的组(两个人)中进行实时聊天,但是如何存储消息? Redis是一个关键的价值商店,这意味着如果我想存储的东西,我需要添加一个唯一的关键,我的数据才能被存储。 如果同一个用户发布多个消息,我将在redis中使用哪些密钥? 我正在考虑独特的ID作为唯一的密钥,但因为我想能够获取这个评论,当用户login聊天页面,但如果我这样做,我需要写另一个数据库聊天ID与发布的用户信息 我忘了什么吗? 有没有最好的方法来做到这一点? 对不起,我的英语不好。

带有SSL的node.js和socket.io

我有一个完全正常工作的通配符SSL服务器,但socket.io给我错误: 无法加载资源:net :: ERR_CONNECTION_CLOSED 在客户端im连接到这样的sockets: var socket = io.connect('http://pricer.somedomain.com',{secure: true, port:5005}); 服务器端: var io = require('socket.io').listen(5005); 我究竟做错了什么?

socket.io – 发送到socketid(单个客户端)不起作用

我正在使用0.9.4版本(根据您的指导,我可以使用任何版本) 在服务器(app.js)中,我存储的套接字标识是这样的: var socket_ids = []; io.sockets.on('connection', function(socket) { socket_ids.push(socket.id); #This is how I am getting socket id. My real code logic is totally different, but getting socket id using socket.id; socket.on('createNote', function(data) { socket.broadcast.to(socket_ids[0]).emit('onNoteCreated', data); }); }); 总之,我有4人开了会议,所有4人是不同的用户。 当p1发送消息时,只能到达p2。 当p3发送消息时,只能到达p4。 保持if..else逻辑放在一边(我很好),当我广播使用套接字id的消息时,与该套接字id的客户端/浏览器不接收该消息。 另外,上面的广播代码行(其他行是SO的自定义)没有给出错误,但客户端没有收到。 但是,这些客户端/浏览器在广播时接收消息。 谢谢。

使用Socket IO在Node JS进程完成时发出消息

如何使用Socket IO和Express + Nodejs,以便在用户login时,我在MEAN栈应用程序的后台运行MongoDb更新查询。 我必须通知用户MongoDb进程已经以非阻塞的方式完成。 我不想使用callback,因为我必须将用户redirect到login页面,而无需等待此查询完成。 所以,如果这个MongoDb进程在用户login后的30秒之后完成,我想要刷新一条消息,说明已经完成了查询更新。 我已经设置套接字IO,但我不知道如何使用它,我的特殊情况。 Express +节点代码 io.on('connection', function(client) { console.log('Client connected…'); client.on('complete', function(data) { client.emit('messages', 'Hello from server'); }); }); 以下是我的AngularJs代码。 var socket = io.connect('/socketTest'); socket.on('connect', function(data) { socket.emit('complete', 'Mongo Process Done'); }); 这些是我从网站上复制的例子,我真的不明白需要做什么才能在客户端捕获这个事件。

LAMP和nodejs在同一台服务器上

我有一个PHP(Laravel框架)应用程序和一个nodejs应用程序。 nodejs应用程序用于将推送通知与socket.io一起发送给用户浏览器。由于PHP不是长轮询过程的更好解决scheme,因此必须将node.js应用程序包含到我的堆栈中。 我只使用nodejs来实现单个function(向来自我的页面的用户显示一些实时数据)。 我可以期望一个1000的并发连接,所以我避免使用PHP的Ajax长轮询,并使用nodejs处理长轮询与socket.io 现在我很困惑是否部署我的PHP应用程序和nodejs应用程序会导致任何问题? 我的PHP应用程序将通过内部API与nodejs应用程序进行通信。 在性能方面在LAMP堆栈上部署nodejs可以吗? 在nodejsstream量点击(长轮询)过程是否影响我的服务器,并影响我的PHP应用程序?