要解决“AWS IoT MQTT WebSocket连接来自Docker puppeteer问题”,您可以采取以下步骤:
FROM node:12
RUN apt-get update && apt-get install -y \
chromium \
libgtk-3-dev \
libnotify-dev \
libgconf-2-4 \
libnss3 \
libxss1 \
libasound2 \
libxtst6 \
xauth \
xvfb \
&& rm -rf /var/lib/apt/lists/*
ENV CHROME_BIN=/usr/bin/chromium
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
RUN npm install puppeteer aws-iot-device-sdk
const AWS = require('aws-sdk');
const deviceModule = require('aws-iot-device-sdk/device');
const device = deviceModule({
keyPath: 'your-private-key.pem',
certPath: 'your-certificate.pem.crt',
caPath: 'root-ca.pem',
clientId: 'your-client-id',
host: 'your-iot-endpoint.iot.us-east-1.amazonaws.com',
region: 'us-east-1'
});
device.on('connect', function() {
console.log('Connected to AWS IoT');
device.subscribe('your-topic');
});
device.on('message', function(topic, payload) {
console.log('Received message:', topic, payload.toString());
});
args
选项来启用WebSocket连接:const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox', '--enable-features=NetworkService']
});
const page = await browser.newPage();
// 在这里执行您的浏览器操作
await browser.close();
})();
# 添加以下内容到Dockerfile
# 更改Docker容器的网络权限
RUN echo "net.ipv4.ip_unprivileged_port_start=0" > /etc/sysctl.d/available-ports.conf
RUN sysctl --system
USER node
这些步骤将帮助您通过Docker puppeteer建立AWS IoT MQTT WebSocket连接。请根据您的具体情况进行相应的调整。