You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SignalR在IE浏览器客户端接收POS交易信息失败求助

SignalR在IE中无法接收Pax S800 POS设备交易回传的问题

问题概述

通过SignalR + JavaScript向Pax S800 POS设备发送价格的功能正常,设备能启动并显示价格,但刷卡完成(支付成功/取消)后,交易信息无法回传到IE浏览器——接收回调GetTransactionResponse在Chrome中正常触发,在IE中完全没反应。由于应用依赖Silverlight,必须使用IE。

相关代码

发送价格的核心代码

var serverMessage = '';
$.connection.hub.url = "http://localhost:8080/signalr";
var console = $.connection.SSP1126HUB;
var ip = '';
console.client.GetSystemResponse = function (message) {
    serverMessage = '';
    serverMessage = message;
}
$.connection.hub.start().done(
function initialize() {
    console.server.Initial(1, ip, 'COM4', 1, 0, '0');
    var delayInMilliseconds = 1000; //1 second
    setTimeout(function () {
        if (serverMessage == '0') {
            console.server.SendAmount1Step(TotalAmount, Amountiban, ' ', ' ', ' ', ' ');
        }
        else
            alert("error");
    }, delayInMilliseconds);
});

页面引入的脚本

<script src="Scripts/jquery-1.7.1.min.js"></script>
<script src="Scripts/jquery-1.12.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
<script src="http://localhost:8080/signalr/hubs"></script>

未触发的接收回调代码

console.client.GetTransactionResponse = function (TerminalId, ResponseCode, SerialId, RRN, ResponseDescription, TxnDate, CardNumberMask)
{
     alert("received");
}

已尝试的无效方案

  • 修改IE开发者工具文档模式
  • 降低IE安全级别
  • 关闭IE保护模式

可行解决方案建议

  1. 强制SignalR使用长轮询传输方式
    IE对WebSocket的兼容性较差,直接指定长轮询(兼容所有IE版本):
$.connection.hub.start({ transport: 'longPolling' })
.done(function() {
    // 原初始化逻辑
});
  1. 清理重复的jQuery引用
    页面同时引入两个版本的jQuery,版本冲突会导致SignalR回调绑定失效。保留高版本,移除旧版本:
<!-- 移除旧版本引用 -->
<!-- <script src="Scripts/jquery-1.7.1.min.js"></script> -->
<script src="Scripts/jquery-1.12.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
<script src="http://localhost:8080/signalr/hubs"></script>
  1. 调整回调绑定时机
    确保所有客户端回调在SignalR连接启动前绑定,避免连接建立后注册导致无法接收消息:
var console = $.connection.SSP1126HUB;
// 先绑定所有回调
console.client.GetSystemResponse = function (message) {
    serverMessage = message;
};
console.client.GetTransactionResponse = function (TerminalId, ResponseCode, SerialId, RRN, ResponseDescription, TxnDate, CardNumberMask) {
    alert("received");
};
// 再启动连接
$.connection.hub.start({ transport: 'longPolling' }).done(function initialize() {
    console.server.Initial(1, ip, 'COM4', 1, 0, '0');
    setTimeout(function () {
        if (serverMessage == '0') {
            console.server.SendAmount1Step(TotalAmount, Amountiban, ' ', ' ', ' ', ' ');
        } else {
            alert("error");
        }
    }, 1000);
});
  1. 启用SignalR日志排查
    开启日志功能,查看IE控制台中的连接细节和错误信息:
$.connection.hub.logging = true;
$.connection.hub.start({ transport: 'longPolling' })
.done(function() {
    console.log("SignalR连接已启动");
});
  1. 添加IE兼容性meta标签
    强制IE使用最新渲染模式,避免兼容性问题:
<meta http-equiv="X-UA-Compatible" content="IE=edge">

内容的提问来源于stack exchange,提问作者maryam mohammadbagheri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:50:24