怎么使用 Socket.io 连接 WebSocket 服务?

红薯 发布于 2014/06/10 23:04
阅读 10K+
收藏 3

服务端使用 WebSocket 的接口,要求用例如 ws://localhost/hello 这样的连接。

使用 Socket.io 该如何连接这个 WebSocket 服务呢?

[补充] 是在浏览器上直接用 Socket.io 跟 WebSocket 服务通讯。

加载中
1
ForEleven
ForEleven

可以使用豌豆荚的两个开源项目,基于spray实现的 socket.io 和 websocket。

https://github.com/wandoulabs/spray-socketio

https://github.com/wandoulabs/spray-websocket

有非常不错的性能

1
ForEleven
ForEleven

纯java实现的WebSocket协议 :  https://github.com/TooTallNate/Java-WebSocket


0
Arrowing
Arrowing
官方文档不是写得很好吗?
Arrowing
Arrowing
回复 @红薯 : 呃,当然,服务端也使用socket.io,建议使用,省事
Arrowing
Arrowing
回复 @红薯 : 有个客户端使用socket.io的js
红薯
红薯
怪我没写清楚
红薯
红薯
你没懂我问题哦:)跟java没关系,是浏览器上的js
Arrowing
Arrowing
回复 @红薯 : 默认是node的,这里是java的,https://github.com/Gottox/socket.io-java-client
下一页
0
blu10ph
blu10ph
要自己实现http协议了?~
0
开源中国匿名会员
开源中国匿名会员
哦哦哦,点赞。
0
char1st
char1st
socket.io是一个以实现跨浏览器、跨平台的实时应用为目的的项目。针对不同的浏览器版本或者不同客户端会做自动降级处理,选择合适的实现方式(websocket, long pull..),隐藏实现只暴露统一的接口。可以让应用只关注于业务层面上。
0
Arrowing
Arrowing
<script src="http://cdn.socket.io/socket.io-1.0.0-pre5.js"></script>
<script>
  var socket = io('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>



char1st
char1st
我刚用官方的代码试了下 连的是netty写的WebSocketServer,但是看log 被认为是poll了。 估计要配合socket.io的服务端。
红薯
红薯
官方代码不靠谱,服务器端是tomcat的websocket
0
ForEleven
ForEleven
如果需要自己实现WebSocket服务的话 ,用spray去实现还是挺方便的。
我有用Spray.io+ WebSocket 实现过一个demo,自己的机器最大支持3w不到的同时在线好像。性能不是特别好,豌豆荚的那个实现,性能非常高。网上有开发者做的分享PPT中有提到
hantsy
hantsy
回复 @红薯 : SockJS 支持 WebSocket 客户端操作,也支持低版本浏览器(模拟方式) https://github.com/sockjs/sockjs-client
红薯
红薯
回复 @ForEleven : 我知道,希望有一个能让低版本浏览器也可用的,呵呵。服务器端直接用 java ee 实现很简单的,不需要这些库
ForEleven
ForEleven
回复 @红薯 : Html5 不是有WebSocket对象么?你想要一个可以解决非Html5浏览器中也可以进行WebSocket通信的?
红薯
红薯
呵呵,这些都不是我想要的。我只是需要一个 js 可以在浏览器上和后端的 WebSocket 服务交互
0
hantsy
hantsy
Socket.io 操作太原始了,支持客户端和服务器端。
0
char1st
char1st

引用来自“arrowing”的评论

<script src="http://cdn.socket.io/socket.io-1.0.0-pre5.js"></script>
<script>
  var socket = io('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>



var opts={};
opts.transports=['websocket'];
  var socket = io.connect('ws://localhost:8080',opts);
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
这样写只是指定了协议。 如果服务端不是用的socket.io,还是有问题。



返回顶部
顶部