node.js - Salesforce Open CTI Socket 使用 socket.io 连接到 nodejs 服务器失败并出现 ping 超时
问题描述
我正在尝试在 Salesforce Open CTI 应用程序中使用 socket.io 实现套接字。服务器端需要向客户端发送各种事件,客户端要设置一个理解并相应地显示一个UI。例如,当在电话系统上收到呼入呼叫时,服务器会收到通知,并且必须将其传达给客户端,以便可以向接听呼叫的代理显示弹出窗口。
为了实现这一点,我首先尝试在 salesforce 上的服务器和客户端之间建立套接字连接。将salesforce open cti应用程序连接到nodejs服务器时遇到错误的地方
我有一个 nodejs 服务器,它具有以下依赖项:“socket.io”:“^2.3.0”添加到 package.json,
以下是服务器端 app.js 中的代码:
var socketio = require('socket.io');
server = http.createServer(app);
server.listen(5000);
io = socketio(server);
function httpsWorker(glx) {
var socketio = require('socket.io');
var server = glx.httpsServer();
io = socketio(server);
// servers a node app that proxies requests to a localhost
glx.serveApp(function (req, res) {
app(req, res);
});
}
io.on('connection', socket => {
console.log('user connected' + socket.id);
socket.on('connectUser', async function (data) {
console.log(data['customerId']);
console.log(data['phone']);
});
socket.on('disconnect', reason => {
console.log('disconnect reason');
console.log(reason);
});
});
以下是客户端的代码:
demoAdapter.cmp:在打开的 cti 组件中包含 socket.io 库
<ltng:require scripts="https://cdn.socket.io/4.1.2/socket.io.min.js" afterScriptsLoaded="{!c.afterScriptsLoaded}"/>
............
demoAdapterController.js:根据 id 和 phone 生成客户端和用户之间的成功连接......
afterScriptsLoaded : function(cmp, event, helper)
{
var middlewareUrl = "https://"+<serverurl>;
const socket = io.connect(middlewareUrl, { secure: false})
socket.on("connect_error", (err) => {console.log("connect error : "+err.message);});
socket.on('connect', function ()
{
const phone = '123456789';
const customerId = '0035g12345CzyriAAB';
console.log("socket created : "+phone+"--"+socketId);
socket.emit('connectUser', {phone: phone ,customerId : customerId});
})
},
……
我还在 salesforce CSP 受信任的站点中添加了 serverurl,允许所有权限。
但是我在客户端和服务器上收到以下错误
客户端错误: 连接错误:服务器错误
服务器端错误: 断开连接 raeson ping 超时用户 connectedzEKNybxPQ3cb3gbYA123
我是否错过了阻止客户端和服务器之间的套接字连接的东西。对此的任何帮助将不胜感激。
提前致谢。
解决方案
推荐阅读
- javascript - 如何在检查所有测验问题之前禁用提交按钮?
- reactjs - 反应中有没有像sass mixins这样的东西?
- c# - LINQ 字符串不正确
- go - 如何使用 root 权限在 VS Code 中调试 Go 文件?
- android - 如何在 Flutter 中实现一个看时间的后台任务?
- linux - 在 bash 脚本中执行 `sh -c`
- php - 自定义端点返回空数组
- python - 大 O 复杂性 - 最大范围从第一个循环开始的双循环
- mysql - 将数据库模型从 MySQLWorkbench 导出到 MariaDB PhpMyAdmin
- python - 如何退出这个while循环