Articles of websocket

实用或最佳的socket.io实现

我有一个执行套接字的问题。 情况:用户在他的列表中有n个房间,用户应该能够从每个房间接收通知。 方法1)为每个房间用户打开一个套接字。 在这个用户必须为每个房间打开多个套接字 方法2)用户打开房间名= userid的单个套接字,节点维护每个房间的列表('room_user')和该房间中的用户(这可以在连接时完成)。 例如 room_user:{ room1 : { user1Id, user2Id } room2 : { user1Id, user3Id } } 对于发送消息,服务器从指定房间的列表中获取用户标识,然后将消息循环发送给所有用户。 在这种方法中,用户只能打开一个套接字,但服务器必须在一个循环中发送相同的消息 我想知道哪种方法更适合

python,如何在远程主机上运行命令并在GUI中实时显示输出?

我知道这是一个真正的开放式问题,但我是新来的python,并build立一个简单的一个Web应用程序给非技术团队一些自我服务的能力。 这个团队有一堆重复的任务,他们踢到另一个团队,只是乞求自动化,如在远程主机上重新启动几个进程,grep日志,清理旧文件,部署/重新启动新版本的应用程序,获取当前运行版本等等。用户将点击button并观看GUI中的输出,他们不会手动input命令来运行(我知道这是危险的)。 任何新的任务将被编写并从技术支持团队添加到应用程序。 现在,我唯一不确定的是如何从命令中获得(接近)实时输出回GUI。 在过去我已经在PHP中构build了一个类似的应用程序,我所做的是将远程命令的输出刷新到db,然后用ajax轮询db并追加新的输出。 这是非常简单,工作很好,即使输出将回来大块(我有输出写入GUI线,所以它看起来像是实时)。 有一个更好的方法吗? 我正在考虑使用networking套接字将命令的输出返回到GUI。 好主意? 馊主意? 任何更好的Python库? 我也可以使用nodejs,如果这有什么区别的话,但我对这两种语言都是新手(我已经有一个简单的python烧瓶应用程序运行,作为一个API来粘合一些业务应用程序,而不是一个大问题重新写入节点)。

Lodash没有办法“删除”

我正在关注我书中的websockets一个例子: var _ = require('lodash') var ws = require('ws') var clients = [] exports.connect = function(server) { var wss = new ws.Server({server: server}) wss.on('connection', function(ws) { clients.push(ws) ws.on('close', function() { _.remove(clients, ws) }) }) } exports.broadcast = … 上面的代码片段将新的websocket客户端添加到clients数组中。 当客户端closures连接时,它将从列表中删除。 我在_.remove(clients, ws)上收到以下错误: TypeError: Object function lodash(value) { // exit early if already wrapped, even if […]

NodeJS,WebSockets(WS)一个Openshift

我试图用NodeJS,WS和Openshift创build一个简单的websocket应用程序 这是我的代码:package.json: { "name": "OpenShift-Sample-App", "version": "1.0.0", "description": "OpenShift Sample Application", "keywords": [ "OpenShift", "Node.js", "application", "openshift" ], "author": { "name": "John Smith", "email": "example123@example.com", "url": "http://www.google.com" }, "homepage": "http://www.openshift.com/", "repository": { "type": "git", "url": "https://github.com/openshift/origin-server" }, "engines": { "node": ">= 0.6.0", "npm": ">= 1.0.0" }, "dependencies": { "express": "^4.12.3", "socket.io" : "0.9.16", "ws" : […]

socket.io连接事件不起作用,为什么?

我是nodejs的新手,expression并尝试socket.io只是一个简单的聊天应用程序。 它非常简单的代码一切都很好,但在节点控制台上没有事件触发日志。 连接事件代码不起作用。 app.js var express = require('express'), app = require('express')(), http = require('http').Server(app), io = require('socket.io')(http), start = require('./routes/index.js'); app.use('/', start); io.on('connection', function(socket){ console.log('a user connected'); socket.on('disconnect', function(){ console.log('user disconnected'); }); }); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; }); module.exports = app; layout.jade doctype html […]

WebSocket WS SSL

我正在使用Google App Engine / Managed VM来使用Web套接字开发nodeJS应用程序。 作为应用程序的一部分,前端需要使用Websockets连接,例如 connection = new WebSocket('wss://127.0.0.1:3001'); 我正在努力的是如何确保SSL部分工作。 我当前的代码来启动WebSocketServer是: var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({port:3001}); 但是这只会创build一个标准的服务器(即ws://127.0.0.1:3001)。 我的问题是,使用WebSocketServer,我如何创build一个WebSocketServer用于SSL?

使用Socket.io的Node.js应用程序在OpenShift托pipe上提供了“意外的响应代码:400”

我有一个本地运行良好的Node.js应用程序,但是当我把它推到OpenShift时,它在开发控制台中给了我这个错误: WebSocket连接到'ws://myapp-mydomain.rhcloud.com/socket.io/?EIO = 3&transport = websocket&sid = mpKjro8KjQ5dIg0GAAAE'失败:WebSocket握手期间出错:意外的响应代码:400 这是一个小型的多人游戏,你和任何其他连接的玩家都可以四处移动,并可以看到对方的移动等。我使用Node和socket.io来获取玩家位置,并将新坐标发送给其他玩家。当我在OpenShift上托pipe时,它给了我上面的错误。 奇怪的是,它几乎可以工作,即你可以看到其他玩家四处移动,除非它非常缓慢和缓慢。 同样的应用程序在Scalingo托pipe上工作得很好,所以它必须是一个OpenShift的东西。 这是我启动socket.io的客户端代码: <script src="/socket.io/socket.io.js"></script> <script> var socket = io(); </script> 和服务器: var express = require('express'); var app = express(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendFile('index.html'); }); this.ipaddress = process.env.OPENSHIFT_NODEJS_IP; this.port = process.env.OPENSHIFT_NODEJS_PORT || 8000; http.listen( port, ipaddress, function(){ console.log('listening […]

为什么许多websocket库实现自己的应用程序级别的心跳?

例如, socket.io具有pingInterval和pingTimeout设置,hapi的nes具有相似的心跳间隔设置。 这表面上是为了防止像过度热心的代理这样的任何中间体closures似乎是不活跃的连接。 但ping / pong框架是websocket协议的一部分,并且似乎达到了相同的目的。 那么为什么websocket库的实现者在应用层增加了另一个ping / pong层呢? 如果我被推测,那么万一websocket服务器正在处理一个不响应/支持websocket协议级别ping-pong的客户端。

将nodejs应用程序部署到Openshift(503错误)

有一个问题部署第一个节点js应用程序openshift。 我有点困惑与港口。 我在创build服务器时设置了这个: var port = process.env.OPENSHIFT_NODEJS_PORT || 8080, server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1' http.createServer(function (request, response) { return router(request, response); }).listen(port, server_ip_address, function() { console.log( "Listening on " + server_ip_address + ", server_port " + port ) }) 我已经logging了端口。 我收到8080.但是,如果我想听websockets我也必须手动设置为8080(接收),我相信,这导致我错误,听同一端口两次。 读取日志也certificate,该应用程序落在ws服务器上的创build方法。 我敢打赌,哪里的港口是这个原因。 但是,如何解决? 有什么select,我还看不到? 更新:更改websocket端口为8000.错误似乎是相同的: Error: listen EACCES at errnoException (net.js:905:11) at Server._listen2 (net.js:1024:19) […]

websockets的JavaScript地图框

相对性新的代码,发现我通过一个问题,从肌肉学习最多,但需要一些指针。 我的项目有两个部分。 深入潜入社区(由团队构build)的响应式地图,以及全屏显示地图的地图,其中标记出现和消失,以便在用户点击每个社区时显示活动。 我有我自己的服务器上的第二个地图。 生产地图将需要传递一个纬度,长度的对象[我已经想出如何收集这些坐标]。 1)我相信我需要一个websocket来连接两者。 任何人都可以传递具体的例子,如何连接传递对象的两个? 2)在服务器上有Lat,Long对象之后,如何将它从我的websocket应用程序传递到我的javascript文件中? 或者我做我的JavaScript文件LISTEN消息的新实例? 谢谢!