草庐IT

javascript - socket.io-redis 在 redis 3.0.6 中出现尾随字节错误

coder 2023-07-18 原文

我正在使用 phpredis 通过 pubsub 方法将数据发送到 node.js。将 node.js 升级到稳定版本 4.2 后,我从 socket.io-redis 模块收到 trailing byte 错误。

Node .js

var pub = redis.createClient(2222, '127.0.0.1',{no_ready_check: true})

pub.auth(redisPassword);

var allsub = redis.createClient(2222, '127.0.0.1',{return_buffers: true,no_ready_check: true})

allsub.auth(redisPassword);

allsub.subscribe('somekey');

io.adapter(RedisStore({pubClient:pub,subClient:allsub}));

错误:

   Error: 256 trailing bytes
        at Object.decode (/usr/apps/js/node_modules/msgpack-js/msgpack.js:200:47)
        at Redis.onmessage (/usr/apps/js/node_modules/socket.io-redis/index.js:93:24)
        at emitTwo (events.js:92:20)
        at RedisClient.emit (events.js:172:7)
        at RedisClient.return_reply (/usr/apps/js/node_modules/redis/index.js:697:22)
        at ReplyParser.<anonymous> (/usr/apps/js/node_modules/redis/index.js:324:14)
        at emitOne (events.js:77:13)
        at ReplyParser.emit (events.js:169:7)
        at ReplyParser.send_reply (/usr/apps/js/node_modules/redis/lib/parser/javascript.js:302:10)
        at ReplyParser.execute (/usr/apps/js/node_modules/redis/lib/parser/javascript.js:213:22)
        at RedisClient.on_data (/usr/apps/js/node_modules/redis/index.js:550:27)
        at Socket.<anonymous> (/usr/apps/js/node_modules/redis/index.js:105:14)
        at emitOne (events.js:77:13)
        at Socket.emit (events.js:169:7)
        at readableAddChunk (_stream_readable.js:146:16)
        at Socket.Readable.push (_stream_readable.js:110:10)
        at TCP.onread (net.js:523:20)

为了找出问题,我已经将socket.io降级到1.36,但错误仍然存​​在。

我已遵循 this thread 中建议的解决方案, 但它们不起作用。

1.添加 return_buffers: true 到实例不起作用。

重启时会出现这个警告:

[nodemon] restarting due to changes...
[nodemon] starting `node node.js`
listening on *:3000
[TypeError: input.split is not a function]

2.在上一篇文章中建议将依赖项更改为 msgpack-js-v5,但这不起作用,如下所示:

socket.io-redis/index.js

var msgpack = require('msgpack-js-v5');

socket.io-redis/package.json:

 "dependencies": {
 "async": "0.9.0",
 "debug": "2.2.0",
 "msgpack-js-v5": "*",
 "redis": "2.4.2",
 "socket.io-adapter": "github:automattic/socket.io-adapter#de5cba",
 "uid2": "0.0.3"
 },

简直是天方夜谭。谁能告诉我如何解决它?

最佳答案

希望你的redis是:

var redis = require('redis');

RedisStore 是:

var RedisStore= require(socket.io-redis);

同时将主机端口添加到 io.adapter 中的 RedisStore,例如:

io.adapter(RedisStore({ pubClient: pub, subClient: allsub, host: '127.0.0.1', port: 222 }));

它对我有用...如果您有问题请告诉我..

关于javascript - socket.io-redis 在 redis 3.0.6 中出现尾随字节错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34676062/

有关javascript - socket.io-redis 在 redis 3.0.6 中出现尾随字节错误的更多相关文章

  1. ruby-openid:执行发现时未设置@socket - 2

    我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass

  2. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  3. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  4. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  5. ruby - 使用 rbenv 和 ruby​​-build 构建 ruby​​ 失败,出现 undefined symbol : SSLv2_method - 2

    我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby​​2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby​​-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm

  6. ruby - 为什么不能使用类IO的实例方法noecho? - 2

    print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上

  7. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  8. ruby - 为什么 return 关键字会导致我的 'if block' 出现问题? - 2

    下面的代码工作正常:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson)do|key,oldv,newv|ifkey==:aoldvelsifkey==:bnewvelsekeyendendputskerson.inspect但是如果我在“ifblock”中添加return,我会得到一个错误:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson

  9. ruby - 安装 tiny_tds 在 mac os 10.10.5 上出现错误 - 2

    我正在使用macos,我想使用ruby​​驱动程序连接到sqlserver。我想使用tiny_tds,但它给出了缺少free_tds的错误,但它已经安装了。怎么能过这个?~brewinstallfreetdsWarning:freetds-0.91.112alreadyinstalled~sudogeminstalltiny_tdsBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtiny_tds:ERROR:Failedtobuildgemnativeextension.完整日志如下:/System

  10. ruby - 如何让几条 haml 线出现在同一行上? - 2

    我有以下haml:9%strongAskedby:10=link_to@user.full_name,user_path(@user)11.small="(#{@question.created_at.strftime("%B%d,%Y")})"这当前将链接和日期放在不同的行上,当它看起来像“链接(日期)”并且日期的类跨度为小...... 最佳答案 您的代码将生成类似这样的html:Askedby:UsernameApril26,2011当您使用类似.small的东西(即使用点而不指定元素类型)时,haml会创建一个implicit

随机推荐