第一次使用socket.io

时间:2017-05-17 19:38:05

标签: javascript node.js

我正在尝试制作一个使用Javascript和Node.js的网络应用。我需要从Javascript到Node.js进行调用,因为我必须能够传递params,直到传单事件通过才能拥有它们。我试图使用Socket.io传递thms但我无法使它工作。这是我的测试代码不起作用。有人可以帮我弄清楚它为什么不起作用?

PS。我在个人php和Node.js服务器上运行。

客户端:

    <script>
        var socket = io.connect('localhost');
        socket.on('news', function (data){
            console.log(data);
            socket.emit('my other event', {my: 'data'});
        });
    </script>
</body>

服务器端:

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
   socket.emit('news', {hello: 'world'});

   socket.on('my other event', function (data) {
      console.log(data); 
   });
});

来自浏览器的错误:Error

2 个答案:

答案 0 :(得分:0)

使用起来非常简单,我给你留下了一个页面,它一步一步地告诉你如何使用框架。

https://socket.io/get-started/chat/

及其对应的repo,其中显示了如何使用该示例。

https://github.com/socketio/chat-example

基本上你必须这样做。

git clone https://github.com/socketio/chat-example.git

npm install

npm start

我会更改index.js文件以了解消息的位置

index.js

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = process.env.PORT || 3000;

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    // This is the additional line
    console.log(msg);
    io.emit('chat message', msg);
  });
});

http.listen(port, function(){
  console.log('listening on *:' + port);
});

如果您有cors错误,请添加到index.js文件中。

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

答案 1 :(得分:0)

这看起来像是交叉来源请求错误。

快速了解CORS中间件。

基本上,您在不明确知道允许其他域访问您的服务器的情况下从其他域发送请求,因此拒绝访问。

您实际需要的是请求中的访问控制标头。