请教一个Java Socket异步长连接客户端编程问题
小弟现在有一个应用, 是从WEB 通过Socket连接到一个Sockct 服务端(SMS), 通过约定好的格式协议来发请求和接受结果, 然后在WEB上将结果解析并显示出来. Socket服务端对我们WEB这边只允许建立一个Socket连接. 也就是说, 服务端提供的是一条异步长连接.
整个连接过程到WEB显示, 我用短连接每次访问重新建立连接然后断开的方式测试通过了. 当然, 会存在竞争问题... 我也想用长连接的方式, 但我遇到的难点是, 每个WEB用户的请求可以无差别的通过一个独立Proxy程序来发送到SMS端, 但SMS返回的信息(每个请求在协议中都有RequestID的标识编号)我怎么把结果从Proxy程序返回到当初发出这个请求的WEB用户会话线程呢? Proxy程序和SMS端建立和维持一个异步长连接, 它肯定是一个单线程的程序, 可以接收任何多线程的请求, 这个接受是无差别的, 只管往SMS发就是了, 但是返回的时候就应该有选择的返回给请求线程了.
我就是这个问题困绕了我好久, 在网上查了几天也没有找到什么有意义的资料. 希望能在这里得到专业的解答, 谢谢了~~
------解决方案--------------------我也是这个问题..
------解决方案--------------------可不可以象jms那样,建立一个中间的消息值,每个接收socket的程序根据requestid进行消息的过滤