首页 > 解决方案 > 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

我是否错过了阻止客户端和服务器之间的套接字连接的东西。对此的任何帮助将不胜感激。

提前致谢。

标签: node.jssocketssocket.iosalesforcesalesforce-lightning

解决方案


推荐阅读