können Sie behandeln dynamische Steckdosen in VueJs mit socket.io-client
Hier ein Beispiel:
Parent:
<MyComponent server="http://127.0.0.1:8000/"></MyComponent>
<MyComponent server="http://127.0.0.1:8000/namespaced-socket"></MyComponent>
<MyComponent :server="dynamicServer"></MyComponent>
//...
components: {
MyComponent
},
Kinder Komponente:
import SocketIO from 'socket.io-client'
//...
export default {
name: 'MyComponent',
data() {
return {
socket: null
}
},
props: {
server: {
type: String,
required: true
}
},
methods: {
newSocket() {
let socket = SocketIO(this.$props.server, { origins: 'http://localhost:*/* http://127.0.0.1:*/*' })
this.socket = socket
this.socket.on('data', (data) => { // your server emits, ready, data, etc...
console.log('data')
// do whatever you want with `data`
})
}
},
mounted() {
this.newSocket()
}
}
In Ihrer übergeordneten Komponente (oder View) können Sie eine Methode erstellen, um dynamisch eine untergeordnete Komponente in der Vorlage hinzuzufügen, mit einem neuen Socket (wenn sich der Server dynamisch ändert, sollten Sie ihn im Untersystem mit einer anderen dedizierten Methode behandeln this.newSocket()
).
Es ist möglich, dass Sie ein Problem mit dem Crossorigin haben können, deshalb habe ich { origins: 'http://localhost:*/* http://127.0.0.1:*/*' }
(zum Beispiel) hinzugefügt.
Hinweis:
vue-socket.io erlaubt nur eine einzelne Instanz zu erstellen.
sicher sein, dass so gut funktioniert, ich es persönlich für einige Projekte verwenden.
Coud Sie mir bitte erklären, für das, was wir „this.socket“ brauchen? –
Es geht nicht um Socket, nur ein Name für die Verwendung der Socket-Instanz über die Komponente (ich könnte andere Namen verwenden ..) – pirs
globale Variable? OK, danke! –