Articles of 套接字

SocketIO断开离开套接字侦听

我正在尝试使用SocketIO与Redis Pub / Sub结合来监视我的应用程序中的事件。 到目前为止,我有如下的服务器的东西 io.on 'connection', (socket) -> log.info "Connection established. [Socket: #{socket.id}]" socket.on 'join_room', (roomName) -> log.info "Join room '#{roomName}'. [Socket: #{socket.id}]" socket.join roomName redis.on 'message', (redisChannel, message) -> message = JSON.parse message log.info "Room: #{message.room} – Event: #{message.event} – Message: #{message.message}" io.sockets.in(message.room).emit(message.event, message.message) socket.on 'disconnect', -> log.info "Connection destroyed. [Socket #{socket.id}]" 然后,在客户端,我有 […]

我如何自定义套接字重新连接url? 想要在重新连接url时添加一个请求参数

我想添加一个更多的请求参数重新连接url。 简单的连接url: http://192.168.0.91:8155/socket.io/?EIO=3&transport=polling&t=1426834118026-12&sid=6STHOzvQ1APcl0igAAAA 重新连接的url应该是: http://192.168.0.91:8155/socket.io/?EIO=3&transport=polling&t=1426834118026-12&sid=6STHOzvQ1APcl0igAAAA&token=xyz

如何在除app.js之外的其他文件中构build套接字io服务器

我对node.js很新,现在我正在做一个在node.js上构build网站的项目。 对不起,如果我的问题是非常天真的。 我正在使用快速框架。 我的app.js正在监听端口(3000)。 在我的route.js中,我从调用一些API获得了一些数据。 我想显示数据到我的datapoint.jade文件。 而且,因为我想绘制这些数据点,我必须在jade中embedded一个JavaScript文件。 我想用socket.io来实现这个发送和接收数据。 但是,构造套接字的所有示例都在app.js中。 我得到的数据在router.js(在其callback函数之一)。 app.js需要router.js。 如何将数据从route.js发送到app.js,然后发送到客户端。 你能指导我一些相关和有用的信息吗? 或者我的devise根本无法工作?

socket.io保持断开连接,即使我尝试重新连接之后? 为什么?

socket = 'what'; //I do this when person clicks connect: if (socket == 'what') { socket = io.connect(); } else if (socket == null) { socket = io.connect(); socket = socket.socket.reconnect(); } //I do other stuff with webrtc and socket. //then when person clicks disconnect, I do: socket.disconnect(); socket = null; 我不想写所有的代码,因为它有很多,我尽量保持这个简单。 基本上,单击断开连接后,套接字保持断开状态。 但是,如果我再次单击连接,套接字仍然保持断开连接,因为我console.log它说,套接字disconnect = […]

NodeJS – 我的应用程序无法启动

我正在尝试启动我的NodeJS应用程序,它可以在不同的Windows机器上完美运行,但是我在Win 7的机器上得到了下面的错误: C:\aaaa\at>c:\nodejs\npm start > application-name@0.0.1 start C:\aaaa\at > node ./bin/www events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EACCES at errnoException (net.js:904:11) at Server._listen2 (net.js:1023:19) at listen (net.js:1064:10) at Server.listen (net.js:1138:5) at Server.listen.Server.attach (C:\aaaa\at\node_modules\socket.io\lib\in dex.js:214:9) at new Server (C:\aaaa\at\node_modules\socket.io\lib\index.js:51:17) at Server (C:\aaaa\at\node_modules\socket.io\lib\index.js:39:41) at Object.<anonymous> (C:\aaaa\at\app.js:7:37) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) npm […]

如何聆听室内活动

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

重新连接后,在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

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' […]