あなたの実際のシングルトンコードはシングルトンとして全く動作していません。
const socketConnection = {
_instance: null,
get instance() {
if (!this._instance) {
this._instance = {
setConnection() {
return io('http://192.168.0.11:1337')
},
}
}
return this._instance
}
}
そして、あなたが参照している:あなたはこれを持っている場合はio('http://192.168.0.11:1337')
たびに呼び出している
socket.instance.setConnection()
あなたはthis._instance
がすでに設定されている場合でも、setConnection()
を参照します。それが問題です。代わりに、を呼び出した結果をinstance
に保存またはキャッシュする必要があります。あなたはまた、問題を単純化することができ
import socket from './socket'
console.log(socket.instance);
socket.instance.on(...);
:その後、ちょうどシングルトンソケットを参照するために、これを使用して、
const socketConnection = {
_instance: null,
get instance() {
if (!this._instance) {
this._instance = io('http://192.168.0.11:1337');
}
return this._instance;
}
}
をそして:
あなたはこれに変更することで、それを修正することができちょうどこれを持っている:
import io from 'socket.io-client'
const socketConnection = io('http://192.168.0.11:1337');
export default socketConnection;
そして、そしてちょうどシングルトンソケットを参照するためにこれを使用する:あなたがあなたの元に実際のシングルトンのコードを示した場合
import socket from './socket'
console.log(socket);
socket.on(...);
FYI、私たちは、おそらくあなたの質問を投稿した後、数分でこれを解決しているだろう質問。実際のコードを表示するのは、擬似コードの例を作成するよりも、実際のコードを表示するほうがずっと良いです。なぜなら、実際のソリューションを識別するために実際のコードを確認する必要があるためです。
あなたの実行環境は何ですか?ブラウザ? node.js?電子? – jfriend00
私はubuntuに乗っており、エクスプレスサーバーとChromeをブラウザとして実行しています –
このコードは、ubuntuでnode.jsで実行されていますか、このChromeブラウザコードですか? – jfriend00