gpt4 book ai didi

json - go 中的 ZeroMQ 不会打印我从 PULL 套接字接收到的 json 消息字节

转载 作者:数据小太阳 更新时间:2023-10-29 03:25:52 25 4
gpt4 key购买 nike

我正在尝试一个简单的代码:

package main

import (
"fmt"
zmq "github.com/alecthomas/gozmq"
)

func main() {
context, _ := zmq.NewContext()
defer context.Close()

// Socket to receive messages on
receiver, _ := context.NewSocket(zmq.PULL)
defer receiver.Close()
receiver.Connect("tcp://localhost:5557")

// Process tasks forever
for {
msgbytes, _ := receiver.Recv(0)
fmt.Println("received")
fmt.Println(string(msgbytes))
}
}

在 NodeJS 中,我发送这样的消息:

console.log(payload);
sender.send(JSON.stringify(payload));

我可以在控制台中看到 json,所以 sender.sen() 实际上是在发送东西。此外,.go 程序对每个负载的输出是:

received
[]
received
[]

没有输出。我搜索了 GoDocs对于Recv 方法,没有像其他语言那样的recv_json, recv_message, etc 的分隔,都是字节。那么发生了什么事?我正在发送一个字符串,因为它是作为 stringfy 发送的,对吗?

更新

正如 Nehal 在下面所说,我将导入语句更改为官方代表,这是新代码:

主要包

import (
"fmt"
zmq "gopkg.in/zeromq/goczmq.v4"
)

func main() {
// Socket to receive messages on
receiver, _ := zmq.NewPull("tcp://*:5557")
defer receiver.Destroy()

// Process tasks forever
for {
request, _ := receiver.RecvMessage()
fmt.Println("received")
fmt.Println(request)
}
}

但是这次连'received'都没有打印出来,好像根本就没有收到消息

最佳答案

服务器进行中:

import (
"fmt"
zmq "gopkg.in/zeromq/goczmq.v4"
)

func main() {
// Socket to receive messages on
receiver, err := zmq.NewPull("tcp://*:5557")
if err != nil {
panic(err)
}

defer receiver.Destroy()

// Process tasks forever
for {
request, err := receiver.RecvMessage()
if err != nil {
panic(err)
}
fmt.Printf("Received: '%s'\n", request)
}
}

Node.js 中的客户端:

var zmq = require('zmq')
, sock = zmq.socket('push');

sock.connect('tcp://127.0.0.1:5557');
setInterval(function(){
console.log('Sending data');
sock.send(JSON.stringify({'msg': 'Hi There!'}));
}, 500);

服务器端:

$ go run a.go
Received: '[{"msg":"Hi There!"}]'
Received: '[{"msg":"Hi There!"}]'
...

客户端:

$ node a.js 
Sending data
Sending data
...

RecvMessage 文档:https://godoc.org/github.com/zeromq/goczmq#Sock.RecvMessage

Node.js 包:https://github.com/JustinTulloss/zeromq.node

go 中优秀的 zmq 示例:https://github.com/booksbyus/zguide/tree/master/examples/Go

不错的入门教程:http://taotetek.github.io/oldschool.systems/post/goczmq1/

关于json - go 中的 ZeroMQ 不会打印我从 PULL 套接字接收到的 json 消息字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42096226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com