Tho*_*enz 7 python sockets ipc node.js
我正在尝试使用Javascript(Nodejs)应用程序与Python应用程序进行通信.
我使用绑定到我的localhost和特定端口的套接字工作.
为了使事情更简单(例如,当部署到可能不允许我在多个端口上侦听的环境时),我想改变我的实现以使用绑定到文件描述符的套接字.
我搜索了高低,但我找到的所有例子都使用了端口.
基本上我需要来自Nodejs文档(指定路径的版本)的此示例的Python服务器计数器部分:
var client = net.connect({path: '/tmp/echo.sock'}.
有人可以提供一个简单的例子来展示,创建和绑定文件描述符套接字并在其上处理数据和/或指向正确的方向吗?
Tho*_*enz 11
我稍微修改了这个好例子(例如,python服务器必须在TCP上侦听而不是UDP套接字与nodejs客户端兼容).
我在这里发布python服务器和nodejs客户端代码以供参考:
import socket
import os, os.path
import time
sockfile = "./communicate.sock"
if os.path.exists( sockfile ):
os.remove( sockfile )
print "Opening socket..."
server = socket.socket( socket.AF_UNIX, socket.SOCK_STREAM )
server.bind(sockfile)
server.listen(5)
print "Listening..."
while True:
conn, addr = server.accept()
print 'accepted connection'
while True:
data = conn.recv( 1024 )
if not data:
break
else:
print "-" * 20
print data
if "DONE" == data:
break
print "-" * 20
print "Shutting down..."
server.close()
os.remove( sockfile )
print "Done"
Run Code Online (Sandbox Code Playgroud)
使用npmlog获取彩色日志输出 npm install npmlog
var net = require('net')
, log = require('npmlog')
, sockfile = './communicate.sock'
;
var client = net.connect( { path: sockfile });
client
.on('connect', function () {
log.info('client', 'client connected');
client.write('hello server');
})
.on('data', function (data) {
log.info('client', 'Data: %s', data.toString());
client.end();
})
.on('error', function (err) {
log.error('client', err);
})
.on('end', function () {
log.info('client', 'client disconnected');
})
;
Run Code Online (Sandbox Code Playgroud)