我使用带有socket.io的Node.js在我的一个页面中实现websockets。 server.js(运行Node.js)有这段代码:
var http = require("http").createServer(),
io = require("socket.io").listen(http);
http.listen(8080);
io.sockets.on("connection", function(socket) {
socket.emit("message", {hello:"world"});
});
这是我正在尝试连接的代码:
var socket = new WebSocket("ws://92.60.122.235:8080/");
socket.onopen = function() {
alert("Socket has been opened!");
}
当我加载页面时,没有任何反应。我正在使用Chrome,我知道支持websockets。错误控制台中没有错误,如果我从命令行看到socket.io服务请求,我看不到任何用户连接。
据我所知,这应该有效,有人可以解释可能出现的问题吗?
答案 0 :(得分:6)
您需要一个socket.io客户端来传递我认为的一些身份验证阶段。试试这个,它应该工作(客户端javascript由socket.io本身提供,不用担心)。
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('message', function (data) {
console.log(data);
socket.emit('helloworld', { msg: 'why do you so love to say hello world?' });
});
</script>
如果不是实际的WebSocket,为什么不调用它
WebSocket
提出并模仿其API?Socket.IO甚至不仅仅是WebSocket 如果选择WebSocket作为传输并且用户正在浏览 您的网站使用超现代的浏览器。某些功能如 心跳,超时和断开支持对实时至关重要 应用程序,但WebSocket API不提供开箱即用的功能。
这类似于jQuery创建功能丰富的决定 简单的$ .ajax API而不是规范化XMLHttpRequest。
答案 1 :(得分:0)
您可以通过高级逻辑项目中的博客文章“Websocket Server Demonstration”下载在Chrome,Firefox和IE(至少)中运行的网页源代码。该网页是为开发人员设置的。