I have developed a custom node, and I want to connect a websocket server in it. But it cannot work and doesn’t have any error display.
The code is below:
import * as WebSocket from 'ws';
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
const ws = new WebSocket(`ws://127.0.0.1:1234`);
console.log(ws)
ws.onopen = function() {
console.log('connect success')
};
The first console can work normally, the the second console doesn’t show and has no error.
Is the n8n blocks websocket connect?
I have not used the web socket library before so I set up a quick web socket test server using
import { WebSocketServer } from 'ws';
const wss = new WebSocketServer({ port: 9999 });
wss.on('connection', function connection(ws) {
console.log('connection made');
ws.on('message', function message(data) {
console.log('received: %s', data);
});
});
Then for my node I have used what you put above but it looks like the connection is not being opened and the node is finishing before it has had a chance to properly connect.
If I use the below in my node code:
const ws = new WebSocket('ws://127.0.0.1:9999');
await new Promise(resolve => ws.once('open', resolve));
ws.send('n8n rocks!');
It waits for that connection to be opened then sends the message so my server output is:
[email protected]:~/Code/javascript/Websocket$ node socket.js
connection made
received: n8n rocks!