是否可以以跨域方式使用Socket.IO?如果是这样,怎么样?网络上提到了这种可能性,但没有任何代码示例.
我正在使用 angular 4、Express 4.16.3和Socket.IO 2.1.1为支持管理面板创建聊天引擎,使用管理面板的支持团队可以在我使用一台服务器的网站上与客户聊天在管理面板一侧和2 个客户端,其中一个客户端再次位于支持团队的管理面板上,另一个位于客户的网站侧。
我有两个子域(一个用于面板和一个用于网站),并参照这个答案,因为我需要在socket.io跨域连接解决方案
的服务器上adminpanel.azurewebsites.net
我的两个客户端部署在两个子域:
网站客户端website.azurewebsites.net上 ,并
在adminpanel.azurewebsites.net面板(支持)的客户
,我也已经启用了CORS上adminpanel.azurewebsites.net(访问控制允许来源标题设置为*)和我在 azure 门户上启用了 websockets。我的两个应用程序都是 https。
服务器端(管理面板)如下所示:
port = process.env.PORT || 1337;
var server = require('http').Server(app);
var io = require('socket.io')(server ,{
transports: ['websocket']
});
io.on('connection', function(socket) {
socket.emit('socket connected')
//every time a new customer added on website end, new room is created
socket.on('new customer added', function(username) {
socket.broadcast.emit('new room', username)
})
});
server.listen(port);
Run Code Online (Sandbox Code Playgroud)
客户端(管理面板)如下所示:
this.socketUrl = …Run Code Online (Sandbox Code Playgroud)