>  기사  >  웹 프론트엔드  >  Express 기반의 websocket을 이용한 node.js에 대한 자세한 설명

Express 기반의 websocket을 이용한 node.js에 대한 자세한 설명

小云云
小云云원래의
2017-12-23 09:03:502781검색

이 글은 주로 express 기반의 websocket을 활용한 node.js의 방법을 소개하고 있으며, websocket을 호출하는 express 기반의 node.js 관련 설정과 사용법을 예시를 통해 분석해 보았습니다. 그것이 모두에게 도움이 되기를 바랍니다.

저도 이 효과를 오랫동안 검색했는데 테스트에 성공했습니다. 어쨌든 성공했으니 한번 살펴보겠습니다

먼저 소켓.io 모듈을 설치해야 합니다


npm install socket.io --save

그 다음 app.js 모듈을 가져오려면


var app = express();

약 12줄 아래에


var server = require('http').Server(app);
var io = require('socket.io')(server);

두 줄을 추가한 다음 20줄 이상이면


app.use(function(req, res, next){
 res.io = io;
 next();
});

를 추가합니다. www에서 시작하는 것을 좋아하지 않기 때문에 앱에서 하단의 두 번째 줄 위에 몇 줄의 코드가 js에 추가되었습니다


var port = 3000;
app.set('port', port);
server.listen(port);

이렇게 하면 3000 포트를 수신하기 시작합니다

, 준비 작업이 완료되고 예제를 시작합니다

공식을 사용하여 샘플 코드 테스트를 app.js에 직접 작성할 수 있습니다


io.on('connection', function (socket) {
 socket.emit('news', { hello: 'world1' });
 socket.on('my other event', function (data) {
  console.log(data);
 });
});

서버 준비 작업이 완료되었습니다. 클라이언트 페이지의 소켓.js 파일


<script src=&#39;javascripts/socket.io-1.4.5.js&#39;></script>
var socket = io.connect("//localhost:3000");
socket.on(&#39;news&#39;, function (data) {
  console.log(data);
  alert(data);
  socket.emit(&#39;my other event&#39;, { my: &#39;data&#39; });
});

그런 다음 페이지를 열고 테스트해 보세요

서버에서 한 페이지로만 정보를 보내고 싶다면 다음과 같이 작성하면 됩니다

router.get(&#39;/&#39;, function(req, res, next) {
  //只有当前页面可以获得
  res.io.on(&#39;connection&#39;, function(socket) {
    socket.emit(&#39;news&#39;, {
      hello: &#39;world&#39;
    });
    socket.on(&#39;my other event&#39;, function(data) {
      console.log(data);
    });
  });
  //所有页面都可以获得
  var io = require("../app").io;
  io.emit("news",{hello:"myworld"});
  res.render("pclogin.ejs", {});
});

관련 권장 사항:

WebSocket 배포 서버의 외부 네트워크가 연결되지 않는 문제에 대한 해결 방법

php에서 websocket에 대한 자세한 소개

nodejs +websocket으로 채팅 시스템 기능을 완성합니다

위 내용은 Express 기반의 websocket을 이용한 node.js에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.