Tag: websocket

cex.ionetworking套接字身份validation时间戳错误

我目前正试图连接到CEX.IO比特币交易所的websocket。 WebSocket连接是可以的,但在身份validation时,我有错误:时间戳不在20秒范围内。 我不知道这个错误是什么。 testing用例1和2的createSignature是可以的( https://cex.io/websocket-api#authentication )。 计算签名和请求参数的代码 const WebSocket = require('ws'); const cexioWs = new WebSocket( 'wss://ws.cex.io/ws/', { perMessageDeflate: false } ); function createAuthRequest(apiKey, apiSecret) { let curTime = Math.floor(Date.now() / 1000); let hmac = crypto.createHmac('sha256', apiSecret); hmac.update(curTime.toString()); hmac.update(apiKey); let args = { e: "auth", auth: { key: apiKey, signature: hmac.digest('hex'), //createSignature(curTime, apiKey, apiSecret), timestamp: […]

使用socket.io广播的效率与向每个客户端发送消息的效率相同

我想优化一些代码,一个节点服务器,发送消息给许多客户端。 现在它向所有客户端广播,即使只需要发送消息给其中的一小部分。 这在正确性方面没有任何坏处,但是服务器在效率方面正在努力处理这么多的消息。 我正在考虑编写一些代码,以确保它只发送给需要它的客户端。 但是,我不确定这是否更有效率。 假设发送消息需要X运算。 假设有N个客户端连接。 广播那么就拿N * X总计算? 或者也许是广播优化所以计算较less? 这是我的问题。 只是为了定义广播和单个消息的含义,这里有一些代码。 请注意,这个代码只是明确地定义操作: var io = require('socket.io')(80); io.on('connection', function (socket) { io.emit('this', { will: 'be received by everyone'}); // broadcast }); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); // single message });

socket.io客户端没有收到消息

当没有指定的房间客户端收到消息,但指定一个房间时,我无法在客户端上接收消息。 server.js var socket = require('socket.io'); var mysql = require('mysql'); const path = require('path'); var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = socket.listen(server); var port = PORT; io.on('connection', (socket) => { console.log('new connection made'); socket.on('subscribe', function (room) { socket.room = room; socket.join(socket.room, function () { console.log('joined:' + room); […]

binary.js BinaryStream.writestream在节点服务器上不可写

我正在上传节点服务器上传一个文件后,我得到错误 我正在使用节点version v0.10.48 参考代码摘自https://github.com/rajkissu/binaryjs-upload-stream 错误:stream不可写入 在BinaryStream.write(/node_modules/binaryjs/lib/stream.js:84:11) 在/src/K/Cli/upload/lib/media.js:120:36 在ChildProcess.exithandler(child_process.js:742:7) 在ChildProcess.emit(events.js:110:17) 在maybeClose(child_process.js:1015:16) 在Process.ChildProcess._handle.onexit(child_process.js:1087:5) 我无法find如何解决这个问题。 问题是1%的情况下,代码去console.log('Debug 4)情况下,并在执行stream.write({end: true}); 它停止节点服务器,即我得到坏的网关,因为抛出错误不处理。 并在前端我使用数据从节点服务器读取内容id和设置完成,但由于节点服务器停止,我无法从节点服务器获取内容id。 bs = new BinaryServer({ port: 9004 }); bs.on('connection', function (client) { client.on('stream', function (stream, meta) { upload(stream, meta); }); }); function upload(stream, meta) { var file = fs.createWriteStream(uploadPath + '/' + meta.name); stream.pipe(file); stream.on('end', function () { // […]

WebRTC或WebSockets用于广播stream媒体video?

我的架构是[ arch0.dot ]: 一台笔记本电脑是[广播]向所有[JavaScript]客户端传输两个video和两个audiostream。 另外我有一个WebSockets连接聊天。 服务器[用Node.JS写入]必须: logging聊天logging(目前通过附加文件来完成) 录制video和audiostream(客户端目前通过MediaRecorder执行此操作 ,但要移至服务器) 相关: WebRTC vs Websockets:如果WebRTC可以做video,audio和数据,为什么我需要Websockets? 2017年下半年,哪种技术最适合这种常见的架构?

如何用WebSocket做请求 – 响应模式

我正在使用Socket.io,我想知道是否有一个很好的方式来使用请求/响应模式。 为每个请求使用UUID,然后只处理来自包含该UUID的响应的数据是最好的方法吗? 这可能不是最具可扩展性的做事方式。

Node.js“ws”websocket服务器在〜30秒后随机断开客户端,错误1006

我有一个简单的websocket服务器,如下所示: const WebSocket = require('ws'); const wss = new WebSocket.Server( { server: server, path: "/ws" }); wss.on('connection', function connection(ws, req) { console.log("Connected"); ws.on('message', function incoming(message) { console.log('received: %s', message); }); ws.on('close', function close(code, reason) { console.log("Code: "+code+" | Reason: "+reason); console.log('disconnected'); }); ws.send('something'); }); 我有一个连接到它的客户端,但连接大约30秒后,websocket服务器closures连接,错误代码为“1006”。 谷歌告诉我这意味着连接exception中断。 但是,我不确定是什么原因造成的。 ws.on('error')callback也不会被触发。 我如何与客户保持无限期的连接?

在NodeJS中存储临时variables

我刚开始尝试使用NodeJS和socket.io创build一个简单的多人在线游戏(类似于在线国际象棋的想法)。 我很抱歉,如果我的问题的答案是真的很明显,因为我试着用googlesearch,但我认为我错过了一些关键的理解。 基本上,我需要在应用程序运行时在服务器上存储一些东西。 例如: 我需要存储哪些套接字连接是主机,哪些是玩家。 我需要存储每个游戏的当前状态(例如在国际象棋中,棋子在哪里,轮到谁了) 能够存储所有的socket.io“房间”也是很好的。 请随时回答这个问题,以下信息仅供参考。 有几件事我已经尝试或在网上看到: 当我谷歌与“持久性”的东西,我得到的基础上保存到数据库的结果或东西,我不认为这是我想要的。 我已经尝试在NodeJS文件的顶部添加variables,就像在普通的JS文件中使用全局variables一样。 这似乎工作,但只是感觉错了,如果有人可以解释这是如何工作,这将是伟大的。 我也看到了所谓的会话variables,我想这可能是我想要的。 我看到的应用程序只是将信息传递到客户端和服务器之间,但我宁愿客户端也不能只编辑信息来“破解”游戏。 任何帮助或解释赞赏。

WebSocket在本地,AWS上工作,而不在AliBaba云上工作

我们有一个非常直的WebSocket node.js实现工作正常 我们的本地机器。 AWS云 但没有工作 阿里云 所有的http / https请求正在打,但websocket请求不是。 试图find这个RCA: Google Chromium浏览器特定的支持问题 问题与谷歌App Engine 一些删除的stackoverflow线程 所有的端口在我们的情况下是开放的 , 我们也没有使用Socket.io 代码对我们来说不是问题 不知道阿里巴巴是否阻止8000 / tcp端口 我们也不确定为什么它不适用于Websockets 已经使用节点服务器应用程序启用CORS 如果阿里云支持WebSockets,也不是很确定。 有什么更好的build议吗?

使用Socket.io的不同房间的不同定时器

我发现了其他3个关于执行回合制游戏的定时器的post,但没有一个人有最终答案。 我正在使用WebSockets(Socket.io)房间进行扑克游戏项目。 每个房间都有一个定时器,负责服务器的转动,例如,每个玩家有10秒的时间来select一张卡。 如果只有一个房间,我可以通过使用setInterval并在每个时间间隔结束时更改转向variables来完成此操作,并向客户端发送新的转向。 但是现在,我觉得在考虑到node.js是单线程的时候,如果有很多房间的话,如何为每个房间实现一个特定的定时器。