Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Всем привет,
Надо доработать laravel 5.8 / vuejs 2.6 приложение с использованием "twilio/sdk": "^5.42" и
пакета "vue-native-websocket": “^2.0.14” ( https://www.npmjs.com/package/vue-native-websocket )
В этом приложении Twillio Chat работает но куча других недоделок, включая необходимость делать
Twillio Video и Twillio ShareScreen
Хочу разобраться c Twillio API переношу код чата в свое laravel 8.12 / twilio/sdk "twilio/sdk": "^6.15"
/ vue: 2.6.12 / "vue-native-websocket": "^2.0.14" приложение с теми же Twilio параметрами но
получаю ошибку при инициализации чата :
vue.common.dev.js?4650:630 [Vue warn]: Error in v-on handler (Promise/async): "Error: Forbidden"
found in ...
Делаю :
methods: {
async runChat() {
this.isLoading = true;
const res = await axios.post("/admin/check_chat_channel", { // get token from server
user_email: this.loggedUser.email,
user_id: this.loggedUser.id,
});
console.log('runChat res.data::')
console.log(res.data)
const chat_token = await this.fetchChatToken();
await this.initializeChatClient(
chat_token,
this.selectedUser.id,
res.data
);
await this.fetchMessages();
this.is_sessionPane = false;
this.isLoading = false;
if (type != 'chat') {
this.startSession();
}
},
async initializeChatClient(token, id, channelName) {
console.log('initializeChatClient channelName::')
console.log(channelName)
console.log('initializeChatClient Twilio.Chat::')
console.log(Twilio.Chat)
console.log('initializeChatClient Twilio.Chat.Client::')
console.log(Twilio.Chat.Client)
const client = await Twilio.Chat.Client.create(token);
console.log('+1 client::')
console.log(client)
client.on("tokenAboutToExpire", async () => {
const token = await this.fetchChatToken();
client.updateToken(token);
});
console.log('+12::')
this.channel = await client.getChannelByUniqueName(channelName); // ОШИБКА НА ЭТОЙ СТРОКЕ
console.log('+13:: this.channel')
console.log(this.channel)
В консоле обьекты чата и клиента : https://prnt.sc/wa4dic
и сама ошибка : https://prnt.sc/wa4epo
непонятно
В resources/js/app.js :
Vue.use(VueNativeSock, 'ws://localhost:8081', {
и консоле запущено приложение сокета :
$ npm start
> ws--status-server@1.0.0 start /mnt/_work_sdb8/wwwroot/lar/fantasylab.io/status-socket.gotoconsult.io
> node server.js
server is running on 8081
Если это приложение не запущено то получаю ошибку раньше что нет конекта...
Приложение запускаю под локальной ubuntu 18/Apache2 хостинг
[url]http://local-ads-backend8.com/[/url]
В приложение сокета в файле server.js для локальной работы нужно раскоментировать:
/* setup local env */
var http = require('http');
var express = require('express');
var app = express();
var ws = require('ws');
var server = http.createServer(app);
/* setup prod env */
/*
const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();
var ws = require('ws');
const options = {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.crt')
};
const server = https.createServer(options, app);
*/
но полагал, что там может быть локально привязка к порту 127.0.0.1:8000, но я не нашел
Но та же ошибка если запустить локальный сервер командой
php artisan serve
с урлом
[url]http://127.0.0.1:8000[/url]
Не подскажтите почему “Error: Forbidden” и как его побороть ?
Спасибо!
Не в сети
Тут мне кажется нужен хороший фронтендер знающий vue js, node js, т.е. тут laravel то не влияет. С моей backend-ерской точки зрения у Вас получается некий процесс на node js, который постоянно слушает ws://localhost:8081. А сам проект работал на h ttp://local-ads-backend8.com:80 или h ttp://127.0.0.1:8000, дак вот как он там на фронте узнает адрес ws://localhost:8081, может он берет основной адрес и просто добавляет порт 8081. Тогда он пытался ходить по ws://local-ads-backend8.com:8081 и ws://127.0.0.1:8081, но это не ws://localhost:8081. Может Вам попробовать запустить проект на домене localhost ?!
Не в сети