我在使用带有sockjs的弹簧websocket时有一个问题。 当我定义" localhost:8080 / websocket" 时,它的工作完美...... 但是当我用ip更改localhost时。例如: 192.168.3.56 websocket不会连接到后端..并且有消息" Connection Lost在建立之前" 任何人都可以帮助我,我真的被卡住了..
我的弹簧配置websocket代码:
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/device","/topic","/queue");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/websocket").withSockJS()
.setStreamBytesLimit(512 * 1024)
.setHttpMessageCacheSize(1000)
.setDisconnectDelay(30 * 1000);
;
}
和我的客户端代码基于coffeescript:
service = {}
listener = $q.defer()
socket =
client: null
stomp: null
service.RECONNECT_TIMEOUT = 30000
service.SOCKET_URL = "#{HOST}websocket"
service.SUBSCRIBER_UPDATE = "/device/update"
service.SUBSCRIBER_UPDATE_ALL = "/device/update_all"
reconnect = ->
$timeout (->
initialize()
return
), @RECONNECT_TIMEOUT
return
startListener = ->
socket.stomp.subscribe "#{service.SUBSCRIBER_UPDATE}/#{id}", (data) ->
body = JSON.parse(data.body)
if body.message is 'RELOAD'
$state.transitionTo $state.current, $stateParams,
reload: true
inherit: false
notify: true
return
socket.stomp.subscribe service.SUBSCRIBER_UPDATE_ALL, (data) ->
console.log data
body = JSON.parse(data.body)
if body.message is 'RELOAD'
$state.transitionTo $state.current, $stateParams,
reload: true
inherit: false
notify: true
return
listener.resolve()
errorListener =(error)->
listener.reject()
service.initialize = ->
socket.client = new SockJS(service.SOCKET_URL)
socket.stomp = Stomp.over(socket.client)
socket.stomp.connect {}, startListener,errorListener
socket.stomp.onclose = reconnect
listener.promise
service