Skip to content

Instantly share code, notes, and snippets.

@eddieantonio
Created March 30, 2017 20:43
Show Gist options
  • Save eddieantonio/e17a3e8a093c2e84090a35a9bd2c83d0 to your computer and use it in GitHub Desktop.
Save eddieantonio/e17a3e8a093c2e84090a35a9bd2c83d0 to your computer and use it in GitHub Desktop.
Zero-dependency Python 3 and Node IPC using UNIX sockets
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import socket
import json
server_address = '/tmp/example.sock'
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect(server_address)
msg = json.dumps({"ping": "hello"}).encode('UTF-8')
sock.send(msg)
sock.send(b"\r\n")
data = sock.recv(256)
print(data.decode('UTF-8'))
sock.close()
var net = require('net');
var server = net.createServer(client => {
const chunks = [];
console.log(`client connected`);
client.setEncoding('utf8');
client.on('end', () => {
console.log('client disconnected');
});
client.on('data', chunk => {
console.log(`Got data: ${chunk}`);
chunks.push(chunk)
if (chunk.match(/\r\n$/)) {
const {ping} = JSON.parse(chunks.join(''));
client.write(JSON.stringify({pong: ping}));
}
});
});
server.on('listening', () => {
console.log(`Server listening`);
});
server.listen('/tmp/example.sock');
/*eslint no-console: false*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment