Я недавно изучаю язык Go, и грамматика почти такая же. Я думал о том, чтобы найти что-то делать. Я просто хотел сделать программное обеспечение, которое "переносит файлы между ПК и мобильным телефоном по локальной сети, и не Я не хочу использовать WeChat/QQ и другое беспокоящее программное обеспечение», поэтому просто используйте Go, чтобы сделать это, и окончательный снимок экрана выглядит следующим образом:
Функция проста:
- После загрузки текста или файлов на ПК создайте QR-код и укажите его в мобильном браузере, чтобы отсканировать код для загрузки.
- После того, как мобильный телефон загрузит текст или файлы в браузер, он автоматически уведомит ПК через веб-сокет, и появится всплывающее окно с запросом на загрузку.
Исходный код здесь, тут в основном говорят о реализации идей.
Реализовать идеи
Создавайте окна с помощью Loca
Я узнал, что следующие библиотеки для Go могут реализовывать окна:
- lorca- Вызвать существующий в системе Chrome/Edge для реализации простого окна, а пользовательский интерфейс реализован через HTML/CSS/JS.
- webview- Он мощнее, чем лорка, и идея реализации пользовательского интерфейса аналогична
- fyne- Фреймворк пользовательского интерфейса, нарисованный с использованием Canvas, с хорошей производительностью
- qt- Более сложная и мощная структура пользовательского интерфейса
Я просто выбрал самую простую Лорку и начал.
Сделать пользовательский интерфейс с помощью HTML/CSS/JS
Я использую React + ReactRouter для реализации структуры страницы, загрузка файла и диалог написаны с помощью собственного JS, а детали пользовательского интерфейса выполняются с помощью CSS3, не полагаясь на другие библиотеки компонентов пользовательского интерфейса.
Основная функция Lorca — отображать написанный мной index.html.
использоватьginРеализовать бэкэнд-интерфейс
JS в index.html использует пять интерфейсов, и я использую gin для реализации:
router.GET("/uploads/:path", controllers.UploadsController)
router.GET("/api/v1/addresses", controllers.AddressesController)
router.GET("/api/v1/qrcodes", controllers.QrcodesController)
router.POST("/api/v1/files", controllers.FilesController)
router.POST("/api/v1/texts", controllers.TextsController)
Генерация QR-кода, которую я использую,go-qrcode.
использоватьgorilla/websocketРеализовать уведомление мобильного телефона на ПК
Эта библиотека представляет собой пример чата, который работает у меня с небольшой модификацией.
вся идея
В целом:
- Сделайте окно с Лоркой
- Используйте HTML для создания интерфейса и используйте JS для вызова фонового интерфейса.
- Реализация внутреннего интерфейса с помощью Gin
- Загруженные файлы помещаются в папку uploads
Всего 400 строк кода Go и 700 строк кода JS.
как пользоваться
В настоящее время я только протестировал систему Windows, и она работает нормально. Теоретически macOS и Linux тоже должны работать, но я не проверял.
ты сможешьстраница релизовЗагрузите исполняемый файл или вы можете самостоятельно скомпилировать исходный код, чтобы получить исполняемый файл.
Уведомление для пользователей Windows
Пользователям Windows необходимо запустить подключение к порту 27149 во входящем правиле брандмауэра, иначе это программное обеспечение не будет доступно по телефону.
скомпилируй сам
git clone git@github.com:FrankFang/synk.git
cd synk
cd server/frontend; yarn build; cd -
./scripts/build_for_mac.sh
./scripts/build_for_win.sh
мой урожай
- Знать, как написать публикацию-подписку на Go (см. чужой исходный код при использовании websocket)
- знание
ch2 <- ch1
иch2 <- (<-ch1)
Разница в том, что первое обычно пишется неправильно. - Знать, как импортировать локальные пакеты из кода приложения Go.