あなたはここsocket.io-client
とVueJs例ダイナミックソケットを扱うことができる:
親:
<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
},
子コンポーネント:
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()
}
}
親コンポーネント(またはビュー)で、テンプレート内に子コンポーネントを動的に追加するメソッドを作成し、新しいソケットを内部に追加することができます(サーバーが動的に変更された場合は、 this.newSocket()
)。
クロスコンタギンに問題がある可能性があります。そのため、私は{ origins: 'http://localhost:*/* http://127.0.0.1:*/*' }
(たとえば)を追加しました。
注:
vue-socket.ioは、ただ1つのインスタンスを作成することができます。
これも機能していることを確認してください。私は個人的にいくつかのプロジェクトに使用しています。
私は「this.socket」が必要なので、私に説明してください。 –
これはソケットに関するものではなく、コンポーネントを通してソケットインスタンスを使用するための名前だけです(他の名前を使用することもできます..) – pirs
グローバル変数? OK、ありがとう! –