Articles of websocket

如何捕捉canvas中的小变化,并将它们发送给所有使用该canvas的相互连接的用户?

我想让人们通过HTML5canvas沟通。 如果一个人画在canvas上,另一个人应该能够同时看到,而且是副诗。 我使用node.js作为具有express框架和socket.io的服务器。 有像.toDataURL和其他方法是将其转换为blob,然后发送它的方法。 但是这些方法将整个canvas转换成图像,然后通过websockets发送。 有没有一种有效的方式,我只能发送创build的新数据或在canvas上进行的更改,而不是创build一个图像,然后再次发送给所有用户? 保持像素的轨迹是更好的吗?

用telnettesting节点的websockets

我正在使用ws库在Node js中编写一个基于套接字的服务器,我想testing我的代码是否工作。 我已经看到其他地方使用telnet来testing简单的聊天服务器,但是当我启动我的服务器并执行telnet 127.0.0.1 5000,虽然输出显示“连接到本地主机”,我的服务器不会logging任何与新连接关联的任何东西。 我testing我的服务器错误或是我的服务器根本无法正常工作? 我的服务器代码如下: var WebSocketServer = require('ws').Server , http = require('http') , express = require('express') , app = express() , port = process.env.PORT || 5000; var server = http.createServer(app); server.listen(port); var wss = new WebSocketServer({server: server}); console.log('websocket server created'); wss.on('connection', function(ws) { var id = setInterval(function() { ws.send(JSON.stringify(new Date()), function() { […]

让一个Node.js WAMP.IO服务器订阅一个客户端发布的目的来衡量延迟

我知道Pub / Sub模式的预期用例是让客户端直接相互“组播”,而服务器是透明的。 但是,有几次我希望我的服务器响应客户端发布。 基本上我想要一个server.Subscribe('event:ident', callback) 。 在开始实施这个之前,我想我并不是第一次运行这个限制。 你们如何解决它? 在这个最新的案例中,我想测量两个客户端之间的延迟。 所以我让第一个客户发布一个其他客户订阅的消息将尽快回复。 显然stream量将通过服务器。 所以我希望服务器也做出响应,这样我就可以将从第一个客户端到服务器的延迟从服务器到第二个客户端的延迟分开。 你有没有看到这种方法的陷阱? (除了我打破严格的PubSub模式) 请注意,我正在使用WAMP.IO库 (实现WAMP协议)。 我不是在谈论Windows,Apache,PHP和MySQL服务器!

当节点服务器重新启动时,如何存储/保留套接字连接

我正在使用webrtc.io创build我的audio,video聊天应用程序的套接字连接。 我想保留所有套接字连接,以便在重新启动node.js服务器时向所有最终用户发送更新。 我正在使用Mongodb作为这个应用程序的数据库。 有没有办法存储在数据库中,并重新启动服务器时检索它?

NodeJS帮助将TCP端口数据代理到Web套接字

我试图从一个专用的TCP端口13854代理JSON数据到一个公共的networking套接字端口8080.为什么我不能得到任何数据时浏览http://localhost:8080 ? var http = require('http').createServer(httpHandler), fs = require("fs"), wsock = require('socket.io').listen(http), tcpsock = require('net'); var proxyPort = 8080; var serviceHost = 'localhost'; var servicePort = 13854; function httpHandler (req, res) { res.setHeader("Access-Control-Allow-Origin", "http://example.com"); res.end(); } http.listen(proxyPort); console.info("HTTP server listening on " + proxyPort); wsock.sockets.on('connection', function (socket) { var tcpClient = new tcpsock.Socket(); tcpClient.setEncoding("ascii"); tcpClient.setKeepAlive(true); […]

使用Node.js和Socket.io实时更新大型HTML内容

我正在构build一个Web应用程序,根据一个客户端所做的更改来更新每个客户端的Web页面的HTML内容,为此我使用了Node.js的Socket.io。 我正在使用HTML5的contenteditable属性来允许客户端手动编辑我需要为其他客户端更新的div元素的内容。 我面临的问题是,我不明白通过websockets发送的数据通知服务器,反过来,其他客户端所做的更改。 在添加和删除每个字符时发送整个innerHTML意味着通过websockets发送大量的数据,导致性能差和速度慢。 发送附加数据不是一个选项,因为我们不知道在div元素的哪个位置数据被添加或删除或编辑。 请注意,使用键盘并不是一个客户端可以更改其网页副本的HTML内容的唯一方式。 所需div元素的数据根据​​客户端使用javascript的几个活动而改变。 现在我需要知道如何才能通过websocket发送确切的变化信息,甚至稍作修改即可获得实时体验。 PS我不打算使用任何现有的模块,如Share.js,但欢迎提出build议。

尝试使用带有Node.js的Websockets(ws)发送消息

当两个时间戳相等时,我正试图向客户端发送消息,这里是套接字部分的代码: var WebSocketServer = require('ws').Server; wss = new WebSocketServer({ port: WS_PORT }); var futureTime = new Date(Date.UTC(2014, 3, 10, 4, 2, 0)); var futureTimeMins = futureTime.getMinutes(); wss.on('connection', function (ws) { ws.on('message', function (message) { // console.log('received: %s', message); }); setInterval(checkTime, 1000); }); function checkTime() { // console.log("checking time!"); var date = new Date(); currentMinutes = […]

websocket如何处理同一浏览器的两个选项卡

我有 1个PHP服务器(提供http请求)和 1 node.js发布更新的数据消息(带有每个连接的websockets)。 PHP服务器设置其Cookie。 在一个浏览器中,这个cookie可用于所有标签。 当浏览器向域打开2个选项卡时,只有一个识别浏览器的cookie,但必须将1条更新数据消息发送到每个选项卡。 什么是区分标签的传统方式? 我应该使用另一个cookie(由node.jspipe理)区分每个浏览器标签吗?

peerjs连接打开,但没有收到数据

这是我的设置 服务器 var webrtcServer = new PeerServer({ port: 9000, path: "/wrtc" }); Peer 1(在node-webkit应用程序中运行) var peer = new Peer( 'masterName', { host: 'localhost', port: 9000, path: '/wrtc' }); peer.on( 'connection', function(conn) { conn.on( 'open', function() { console.log( "peer connected" ); // This fires as expected conn.send( "helo" ); }); }); 对等2(在浏览器中运行) conn = peer.connect('masterName'); conn.on('open', […]

Socket.io客户端重新连接不起作用

我使用Socket.io在Node.js服务器和客户端网站之间进行通信。 一切都很好! 除了一件事。 我允许用户从Socket.io断开连接,稍后重新连接,或者至less我试图。 请记住,调用io()的套接字存储在mySocket中,使用mySocket.io.disconnect()可以正常断开连接。 服务器捕获它,客户端知道它已经断开连接,这很好。 问题是当我尝试稍后重新连接… 所以起初我只是试图再次设置mySocket=io() ,但失败了。 我知道有一个重新连接的方法,所以我尝试使用,并且我的问题变得更糟。 所以,现在我正在使用mySocket.io.reconnect() ,我得到了一些奇怪的结果,如下所述。 所以首先,服务器正在尝试重新连接。 正好赶上on('connection',…)事件。 然而,CLIENT似乎认为它从来没有重新连接 – 例如, mySocket.connected的值保持为false并且所有emit()调用失败(并且永远不会到达服务器)。 除了简单的mySocket.io.reconnect()之外,是否还有一些特殊的方法可以使用? 或者我应该设置一些variables或参数? 为什么我的服务器捕捉重新连接,如果客户认为它没有连接? 怎么回事,我该如何解决?