Tag: socket.io

获取错误:未知的提供者:socketProvider < – socket < – LogCtrl

我是AngularJs和nodejs的新手,我有一个简单的聊天应用程序,angular色作为客户端和socketio作为服务器端。 加载angular页面时出错 Error: [$injector:unpr] Unknown provider: socketProvider <- socket <- LogCtrl 我的客户端 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-route.min.js"></script> <script src="http://localhost:1337/socket.io/socket.io.js"></script> <script type="application/javascript"> socket = io.connect('http://localhost:1337/'); angular.module('Log',['ngRoute']) .controller('LogCtrl',['$scope','socket','$location', function($scope,socket,$location){ console.log('ok baby !!'); $scope.addUser = function(){ socket.emit('init',$scope.user); $location.path("/view/index.html"); }; }]); </script> <body ng-app = "Log" > <div class=" main" ng-controller = "LogCtrl" style = "width: 300px; "> <fieldset> <form […]

如何聆听室内活动

所以为了澄清,我知道客户端应该发送一个消息,比如“join房间”给服务器进行处理,这很好,我知道我也可以为“rest室”做同样的事情。 我想要的是实际听自己的事件,因为如果客户端断开连接,我需要发送消息到受影响的房间,因为当客户端断开连接,然后他们会自动离开所有房间。 所以我想要一些像 socket.on('join' function() { // send message }); socket.on('leave' function() { // send message }); 因此,如果用户closures窗口(断开客户端,然后触发所有房间留下),我可以发送一条消息。 我正在使用最新的socket.io和redis适配器。 也; 什么是最有效的方式来列出一个特定的套接字所在的房间,技术上我认为断开事件应该包含client_id,所以我可以手动做到这一点。 关键是清晰度和稳定性,虽然我打开替代方法(仍然必须使用socket.io)。 谢谢

在服务器重启时,如何区分并恢复来自同一用户的两个不同客户端套接字连接?

想象一下这个场景: 客户端打开浏览器选项卡并导航到page-x。 当客户端在这个页面上时,我通过与此页面相关的套接字发出一些数据。 我们来调用这个socket-context-x。 然后,客户端打开另一个浏览器选项卡(不closures第一个)并导航到页面-y。 他连接一个新的套接字ID。 当客户端在这个页面上时,我开始发送不同的数据。 我们来调用这个socket-context-y。 现在,想象服务器重新启动,客户端的选项卡自动重新连接到服务器。 现在,我必须记住每个具有套接字连接的选项卡的上下文,以便我可以继续向每个页面发送相关数据。 我如何区分每个标签所在的套接字上下文? 我不能使用会话ID,因为会话ID将是相同的两个选项卡。 我不能使用套接字ID,因为服务器重新启动后,当客户端自动重新连接,将给出新的套接字ID。

Node.js + socket.io“RangeError:超过最大调用堆栈大小”

我正在处理我的整个HTML文档后,使用socket.io事件发送我的html整个html文档到nodejs服务器。 但我得到“RangeError:最大调用堆栈大小超过”。 我试图发送一些小的html内容到我的nodejs服务器,它发送非常顺利,但是当我发送我的整个HTML文档,然后我得到这个错误。 这工作正常: app.socket.emit('allSectionsData',{ data:'<!DOCTYPE html><html><body><svg height="60" width="200">' + '<text x="0" y="15" fill="red" transform="rotate(30 20,40)">I love SVG</text>'+ 'Sorry, your browser does not support inline SVG.</svg></body></html>' }); 但是,当我使用这个发送我的整个文档 var all_route_content=document.getElementById('All_outlet'); //setTimeout( function() { app.socket.emit('allSectionsData',{ data:all_route_content }); //});

重新连接后,在socket.io-client中重新注册事件

我有一个socket.io客户端应用程序,看起来像这样: var port = 1234; var host = "http://host.com"; var ioc = require( 'socket.io-client' ); var isConnected = false; var socket; connect(); function connect() { socket = ioc.connect( host + ":" + port); } socket.once( "connect", function () { isConnected = true; console.log( 'Client: Connected to port ' + port ); socket.emit( "status message", "Hello […]

如何在Sails.js中的所有页面上监听login用户的套接字更新?

我有一个Sails.js应用程序。 每个页面中有当前设置的select(在布局中设置)。 我需要能够监听当前更改的事件的所有页面,并通知用户刷新页面。 我可以在客户端调用io.socket.on('currentChanged') ,只需在CurrentController.changed运行一个发射器。 还是我特别需要听当前的控制器,并包裹在一个if(req.isSocket)的响应? 我如何确保只通知用户,而不是每个人? 有没有更好的办法? 我不想为每个监听器添加相同的套接字响应。 我已经看遍了所有的堆栈溢出和谷歌,不能像这样一个听众一次所有的网页。 编辑:我知道我可以使用req.socket.handshake.sessionID获取会话ID。 我可以得到原始套接字,但我宁愿这样'sails.js'的方式。 此外,在这个链接,这表明我可以join一个房间使用用户ID。 我应该这样做login

nodejs在使用fstat读取文件时抛出偏移出界限错误

您好使用nodejs和scoket io来推动一些数据的目标。 我从json文件中读取json数据以将其推送到目标。 我使用fs模块的fstat来读取一个文件,但是每当有一个并发校正或一段时间后,它会抛出偏移出界的错误。 这是代码片段。 fs.stat(fileName, function(error, stats) { fs.open(fileName, "r", function(error, fd2) { var buffer = new Buffer(stats.size); fs.read(fd2, buffer, 0, buffer.length, null, function(error, bytesRead, buffer) { var data = buffer.toString("utf8", 0, buffer.length); fs.close(fd2); }) }) 这是它正在抛出的错误 fs.js:457 binding.read(fd, buffer, offset, length, position, wrapper); ^ Error: Offset is out of bounds at Object.fs.read (fs.js:457:11) […]

需要帮助了解Socket.io(node.js)中的以下jQuery代码吗?

html文件 <script> var socket = io(); $('form').submit(function(){ socket.emit('chat message', $('#m').val()); $('#m').val(''); return false; }); socket.on('chat message', function(msg){ $('#messages').append($('<li>').text(msg)); }); </script> io.on( "connection", function(socket) { console.log( "A user connected" ); socket.on('disconnect', function(){ console.log('user disconnected'); }); socket.on('chat message', function(msg){ console.log('message: ' + msg); }); socket.on('chat message', function(msg){ io.emit('chat message', msg); }); }); 我不明白jQuery语法中的这部分代码: $('#m').val(''); return false; 由于我已经通过socket.emit('chat […]

Angular页面到node.js服务器套接字连接

我有这个问题。 这是我的node.js服务器中的代码: var bodyParser = require("body-parser"); var express = require('express'); var http = require('http').Server(app); var io = require('socket.io')(http); var app = express(); …… io.sockets.on('connection', function(socket){ socket.emit('welcome', { message: 'Welcome!', id: socket.id }); socket.on('i am client', console.log); }); app.listen(port); 和我的angular度页面: var modulo_angular = angular.module('app', ['btford.socket-io', 'ngRoute']); modulo_angular.factory('socket', function (socketFactory) { var myIoSocket = io.connect('http://myurl:8000/'); var mySocket […]

为什么我的socket.io事件通过大块?

我正在尝试构build一个实时游戏,并通过node.js和sockets.io向客户端进行stream媒体更新。 我正在使用最新的Chrome浏览器,但我也尝试过FF。 所有的服务器端代码都正确地login到控制台,所以我知道在那里的时间是好的,但在客户端,似乎消息是“块”而不是stream。 服务器: var util = require("util"); var io = require("socket.io"); var socket = io.listen(8000); init () { socket.sockets.on("connection", onSocketConnection); }; function onSocketConnection(client) { util.log("New player has connected: " + client.id); client.on("disconnect", onClientDisconnect); client.on("getMatchupUpdates", onUpdateMatchup); }; /* I'm calling an edge.js function to perform game stuff with a callback to a js function 'onUpdateTime' […]