当前位置: 首页 > 面试题库 >

Socket.IO基本示例不起作用

商品
2023-03-14
问题内容

我是Socket.IO的100%新手,并且刚刚安装了它。我试图遵循一些示例,并且可以使服务器端运行,但似乎无法使客户端连接。

以下是我的server.js:

var http = require('http'), io = require('socket.io'),

server = http.createServer(function(req, res){ 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.end('<h1>Hello world</h1>'); 
});
server.listen(8090);

var socket = io.listen(server); 
socket.on('connection', function(client){

    console.log('Client connected.');

    client.on('message', function(){ 
        console.log('Message.');
        client.send('Lorem ipsum dolor sit amet');
    });

    client.on('disconnect', function(){
        console.log('Disconnected.');
    });

});

这是我的index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Socket Example</title>
    <base href="/" />
    <meta charset="UTF-8" />
    <script src="http://localhost:8090/socket.io/socket.io.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
</head><body>
<script type="text/javascript"> 
$(document).ready(function(){

    var socket = new io.Socket('localhost', { 'port': 8090 });

    socket.connect();
    console.log("Connecting.");

    socket.on('connect', function () {
        console.log("Connected.");
    });

    socket.on('message', function (msg) {
        console.log("Message: " + msg + ".");
    });

    socket.on('disconnect', function () {
        console.log("Disconnected.");
    });

});
</script> 
</body></html>

当我执行node server.js时,它指示socket.io已启动。

当我加载index.html时,出现一行,指出“调试-服务静态/socket.io.js”,但除此之外,没有控制台消息或其他行。

您提供的任何指导将不胜感激。正如我说的那样,我对此表示100%的绿色,因此,如果您能将其尽可能分解,我也将不胜感激。

谢谢


问题答案:

在相同的起源策略中,localhost:8090并且localhost不是相同的起源(不同的端口),因此localhost/index.html无法连接到localhost:8090上的socket.io。

一种选择是启用index.html localhost:8090(请参见下面的代码)。然后,您只需将“
index.html”放入服务器脚本的同一目录中,启动服务器并输入localhost:8090浏览器。

var fs = require('fs');

server = http.createServer(function(req, res){
    fs.readFile(__dirname + '/index.html', 'utf-8', function(err, data) { // read index.html in local file system
        if (err) {
            res.writeHead(404, {'Content-Type': 'text/html'});
            res.end('<h1>Page Not Found</h1>');
        } else { 
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end(data);
        }
    });
});


 类似资料:
  • 我试图实现一个基本的Hibernate示例,但我无法使其工作。 每次我试着运行它,我都会得到: 线程“main”org.hibernate.hibernate.hibernateException:无法在org.hibernate.engine.JDBC.connections.internal.BasicConnectionCreator.createConnection(BasicConnec

  • 我试图从书中创建一个简单的servlet,但没有用。 我使用GlassFish服务器开源版本3.1.2.2、jdk1.7.0_10和记事本。 root\WEB-INF\classes\net\ensode\glassfishbook\formhandling\FormHandlerServlet.class : root/web.xml: root/dataentry.html: 我在控制台中通过

  • 我正在尝试JUnit5TestContainers快速启动示例:

  • 问题内容: 我正在尝试在AngularJS中设置手表,但我显然做错了,但我不太清楚。手表在立即加载页面时触发,但是当我更改观察值时,它不会触发。作为记录,我还在匿名函数上设置了监视以返回监视的变量,但结果完全相同。 我在下面整理了一个最小的示例,在控制器中进行了所有操作。如果有所不同,我的实际代码将挂接到指令中,但是两者都以相同的方式失败。我觉得我必须缺少一些基本的东西,但我只是看不到。 HTML

  • 问题内容: 我正在尝试运行JavaKinesisWordCountASL示例。 该示例似乎连接到我的Kinesis Stream并从该流中获取数据(如下面的日志所示)。但是,在示例中,Sparks不会调用传递给unionStreams.flatMap方法的调用函数,并且不会打印任何单词计数。 我尝试同时使用Java 8和Java 7运行。我正在ubuntu实例上运行它。相同的示例适用于我的Macb

  • 我已经按照说明实现了facebook android cognito示例cognitosyncdemo,在尝试同步数据集时出现以下错误, E/ListDatasetsActivity(8541):原因:com.amazonaws.AmazonServiceException:检测到1验证错误:“登录”处的值“{graph.facebook.com=}”无法满足约束:映射值必须满足约束:成员的长度必