¿Por qué no puedo conectarme por IPC?

He ejecutado con éxito geth --rpcpara probar algunas funciones, pero necesito la personalAPI que, según esta respuesta , debe realizar IPC.

cuando corro

geth --ipcapi "db,eth,net,web3,personal" --ipcpath /tmp/geth.ipc

Esto crea el archivo ipc y geth parece iniciarse normalmente.

Tengo los siguientes módulos npm instalados:web3 web3_extended web3_ipc

Luego ejecuto esto en nodejs:

var web3_extended = require('web3_extended');

var options =
{
    host:     '/tmp/geth.ipc',
    ipc:      true,
    personal: true, 
    admin:    false,
    debug:    false
};

var web3 = web3_extended .create (options);

var coinbase = web3.eth.coinbase;

La última línea me da una respuesta HTML que incluye

Your browser sent a request that this server could not understand.

y

Apache/2.4.12 (Ubuntu) Server at localhost Port 80

Esa línea de Apache me hace pensar que nodejs ni siquiera está intentando conectarse por IPC.

¿Por que no? O, ¿cuál más es el problema?

Respuestas (1)

Resumen

P: ¿Por qué no puedo conectarme por IPC? ¿Por que no? O, ¿cuál más es el problema?

R: A partir de su mensaje de respuesta HTML, parece que su código está utilizando actualmente la versión de web3_extended que no es compatible con el protocolo IPC.



Detalles

¿Puede comprobar que está utilizando tjade273/web3_extended y NO The18thWarrior/web3_extended ?

El primero se bifurcó del segundo e incluye el manejo del protocolo IPC. De tjade273/web3_extended/blob/index.js - líneas 7 a 15 :

function create(options) {
    if(options.ipc){
        var client = new net.Socket();
        web3.setProvider(new web3.providers.IpcProvider(options.host,client));
    }
    else{
        web3.setProvider(new web3.providers.HttpProvider(options.host));
    }
    if (options.personal) {

mientras que el código original de The18thWarrior/web3_extended/blob/index.js - líneas 6 a 9 :

function create(options) {
    web3.setProvider(new web3.providers.HttpProvider(options.host));

    if (options.personal) {
¡Gracias! Esa parece la razón. Además de bajar los archivos manualmente, ¿hay alguna forma de configurar npm/ubuntu para obtener la versión correcta?
@spraff Puede usar npm install web3_ipcpara instalar el mío en lugar de web3_extendedpara la otra versión
También tengo el mismo problema, pero no obtuve la solución adecuada. ¿Necesito instalar solo web3_ipcy no web3_extended? Como en este caso, recibo un error cannot find node module web3_extended. Y si instalo ambos módulos de nodo web3_extendedy web3_ipcrecibo el mismo error que Your browser sent a request that this server could not understand.¡Ayuda!