Tag: socket.io

为什么socket.setNoDelay()抛出一个错误?

我有一个nodejs服务器使用socketio实时通信。 var app = require('http').createServer(handler) , io = require('socket.io')().listen(app) function init() { app.listen(process.env.PORT || 8888); }; io.sockets.on('connection', function (socket) { socket.setNoDelay(true); onSocketConnection(socket); }); 问题是,我每次调用socket.setNoDelay(true); 它正在踢回: E:[path]\server.js:58 socket.setNoDelay(true); ^ TypeError: undefined is not a function at Namespace.<anonymous> (E:\[path]\server.js:58:12) at Namespace.emit (events.js:107:17) at Namespace.emit (E:\path]\node_modules\socket.io\lib\namespace.js:205:10) at E:\[path]\node_modules\socket.io\lib\namespace.js:172:14 at process._tickCallback (node.js:355:11) 我似乎无法find任何文件为什么发生这种情况。 其他人看到这个? 眼镜: > Windows Environment > […]

我怎样才能发送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 […]

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 …

如何处理io.use中间件来捕获客户端上的错误?

我需要检查我的套接字连接的身份validation,如果失败,请删除一个。 我的服务器和客户端代码如下所示: // server.js var http = require('http'); var sio = require('socket.io'); var app = require('express')(); var server = require('http').createServer(app).listen(3000, function () { console.log('Server listening on 3000 port'); }); var io = sio.listen(server); io.use(function (socket, next) { return next(new Error('Not Authenticated')); }); // client.js var socket = io.connect(window.location.origin); socket.on('connect', function () { console.log('socket connected') }); […]

使用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); 我究竟做错了什么?

如何在套接字事件中呈现新的玉视图?

我有两个主要的js文件,一个在server.js服务器端,另一个在客户端,即enterchat.js 。 这两个文件是通过socket.io进行通信的文件。 所有套接字事件都按预期工作。 server.js var express = require('express'), … server = require('http').createServer(app), io = require('socket.io').listen(server); var usernames = [], username_sockets = []; … app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use('/', express.static(__dirname+'/public/')); app.get('/chat', function (req, res) { res.render('checkUsername', {title:'Socket IO Chat'}); }); app.get('/chatwindow', function (req, res) { res.render('chatwindow', {title:'Welcome to chat window'}); }); io.sockets.on('connection', function […]

AngularJS不会使用socket.io刷新视图

我有一个node.js服务器应用程序与以下设置: var express = require('express'); var io = require('socket.io'); var http = require('http'); var app = express(); app.use(express.static('public')); var server = http.createServer(app); io = io.listen(server); io.on('connection', function(socket){ console.log('a user is connected'); }); device.on('disconnect', function() { console.log('we got disconnected! 🙁 '); io.emit('deviceDisconnection'); }); 这里的设备是蓝牙连接的设备。 而且,在客户端,我有一个AngularJS应用程序,在应用程序的控制器中声明以下事件订阅: var appFront = angular.module(appFront , []) .controller('mainController', ['$scope', '$http', function($scope,$http) { […]

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的自定义)没有给出错误,但客户端没有收到。 但是,这些客户端/浏览器在广播时接收消息。 谢谢。