8000 GitHub - Linzecong/LP_ZMQ: LP_ZMQ is a zmq binding for Swift 5.1.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Linzecong/LP_ZMQ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LP_ZMQ

LP_ZMQ is a 0mq binding for Swift 5.1.

Reference : https://github.com/goloveychuk/ZeroMQ

Installation

Do the following step

sudo apt-get update
sudo apt-get install build-essential pkg-config
cd /tmp/
sudo curl -L -O https://github.com/zeromq/zeromq4-1/releases/download/v4.1.4/zeromq-4.1.4.tar.gz
sudo tar xf /tmp/zeromq-4.1.4.tar.gz
cd /tmp/zeromq-4.1.4
sudo ./configure --without-libsodium
sudo make
sudo make install

add the dependencies in Package.swift

dependencies: [
        ...
        .package(url: "https://github.com/Linzecong/LP_ZMQ.git", .branch("master"))
],

Example

REQ --- REP

client

import LP_ZMQ
let context = try Context()
let clientsock = try context.socket(.req)
try clientsock.connect("tcp://127.0.0.1:5558")
try clientsock.send("hello")
var data = try clientsock.receive()
print(data)
try clientsock.send("hello")
data = try clientsock.receive()
print(data)

server

import LP_ZMQ

let context = try Context()
let serversock = try context.socket(.rep)
try serversock.bind("tcp://*:5558")
while true{
    let data = try serversock.receive()
    print(data)
    try serversock.send("world")
} 

PUSH --- PULL

client

import LP_ZMQ
let context = try Context()
let clientsock = try context.socket(.push)
try clientsock.connect("tcp://127.0.0.1:5558")
try clientsock.send("hello")
try clientsock.send("hello")
try clientsock.send("hello")

server

import LP_ZMQ

let context = try Context()
let serversock = try context.socket(.pull)
try serversock.bind("tcp://*:5558")
while true{
    let data = try serversock.receive()
    print(data)
} 

PUB --- SUB

client

import LP_ZMQ
let context = try Context()
let clientsock = try context.socket(.sub)
try clientsock.connect("tcp://127.0.0.1:5558")
try clientsock.setSubscribe(Data("A".utf8)) // filter
while true{
    let data = try clientsock.receive()
    print(data)
}

server

import LP_ZMQ
import Foundation
let context = try Context()
let serversock = try context.socket(.pub)
try serversock.bind("tcp://*:5558")
while true{
    Thread.sleep(forTimeInterval: 1)
    //try serversock.send("A",mode:[SendMode.SendMore])
    try serversock.send(String("A123"))
} 

ROUTER --- DEALER

clientA

import LP_ZMQ
let context = try Context()
let clientsock = try context.socket(.dealer)
try clientsock.setIdentity("A") 
try clientsock.connect("tcp://127.0.0.1:5558")
while true{
    let data = try clientsock.receive()
    print("A", data)
}

clientB

import LP_ZMQ
let context = try Context()
let clientsock = try context.socket(.dealer)
try clientsock.setIdentity("B") 
try clientsock.connect("tcp://127.0.0.1:5558")
while true{
    let data = try clientsock.receive()
    print("B", data)
}

server

import LP_ZMQ
import Foundation
let context = try Context()
let serversock = try context.socket(.router)
try serversock.bind("tcp://*:5558")
while true{
    Thread.sleep(forTimeInterval: 1)
    try serversock.send("A",mode:[SendMode.SendMore]) //to A
    try serversock.send(String("to A"))

    try serversock.send("B",mode:[SendMode.SendMore]) //to B
    try serversock.send(String("to B"))
} 

About

LP_ZMQ is a zmq binding for Swift 5.1.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0