我已经使用npm在我的vue-cli项目上安装了socket.io
。并像这样使用它:
import socketio from 'socket.io';
import VueSocketIO from 'vue-socket.io';
export const SocketInstance = socketio(MY_URL);
Vue.use(VueSocketIO, SocketInstance)
但当我运行应用程序时,我会得到;
控制台上出现
Uncaught TypeError: exists is not a function
错误。在没有应用程序的情况下运行。
有人能帮忙吗?
如果我参考官方的vue-socket.io文档,基本用法是:
import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
Vue.use(new VueSocketIO({
connection: MY_URL,
}));
而且,如果你必须将socket-ioInstance传递给vue-socket.io,你必须这样做:
import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
import SocketIO from 'socket.io-client'
const SocketInstance = SocketIO(MY_URL);
Vue.use(new VueSocketIO({
connection: SocketInstance,
}));
但是,在这种情况下,包不是socket.io
,而是socket.io-client
。问题可能来自于此。
编辑:
对于身份验证,如果我参考socket.io文档:https://socket.io/docs/v4/client-initialization/#Socket-选项和vue-socket.io的使用,这是解决方案:
无套接字io客户端:
import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
Vue.use(new VueSocketIO({
connection: MY_URL,
options: {
// authentication options
auth : {
token : 'qwerty',
}
},
}));
带socket.io-client:
import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
import SocketIO from 'socket.io-client'
const SocketInstance = SocketIO(MY_URL, {
// authentication options
auth : {
token : 'qwerty',
}
});
Vue.use(new VueSocketIO({
connection: SocketInstance,
}));